pub trait WithExpr: Clone + Sized + WithPosition + WithType {
// Required methods
fn expr(&self) -> &Option<Expr>;
fn set_expr(&mut self, expr: Option<Expr>);
fn entries(&self) -> Entries;
// Provided methods
fn resolve_type_expr(&mut self, entries: &TypeEntries) -> Result<(), Error> { ... }
fn resolve_expr(
&self,
problem: &Problem,
entries: &Entries
) -> Result<Self, Error> { ... }
fn check_parameter_size(&self, problem: &Problem) -> Result<(), Error> { ... }
fn check_type(&self, problem: &Problem) -> Result<(), Error> { ... }
}