public abstract Expression GenerateWrite(AstGenerator gen, ExpressionType type, Expression value);
public abstract Expression GenerateRead(AstGenerator gen);
public abstract IEnumerable<Expression> Generate(AstGenerator gen);