pub trait FromSexp<T: Types> {
// Required methods
fn var(&self, name: &str) -> Result<T::Var, ParseError>;
fn kvar(&self, name: &str) -> Result<T::KVar, ParseError>;
fn string(&self, s: &str) -> Result<T::String, ParseError>;
fn sort(&self, name: &str) -> Result<T::Sort, ParseError>;
// Provided method
fn into_wrapper(self) -> FromSexpWrapper<T, Self>
where Self: Sized { ... }
}