pub trait Var: Debug { // Required methods fn var_type(&self) -> Rc<dyn Type>; fn as_any(self: Rc<Self>) -> Rc<dyn Any>; // Provided method fn as_env(self: Rc<Self>) -> Option<Rc<dyn Env>> { ... } }