pub trait Callable {
// Required method
fn call(self, args: Vec<Expr>) -> Call;
// Provided methods
fn call1(self, arg: impl Into<Expr>) -> Call
where Self: Sized { ... }
fn call2(self, arg1: impl Into<Expr>, args2: impl Into<Expr>) -> Call
where Self: Sized { ... }
}