public override Expression Optimize(OptimizationParams op)
 {
     return this;
 }
 public override Expression Optimize(OptimizationParams op)
 {
     return new BinaryOperation(operation, operand1.Optimize(op), operand2.Optimize(op));
 }