anchor.diff:      class operator Implicit(const Value: LambdaParam): Expr;
   
       class operator Negative(const Value: Expr): Expr;
  -
  -    class operator Add(const Value1: Variable; const Value2: Expr): Expr;
  -    class operator Add(const Value1: Expr; const Value2: Variable): Expr;
       class operator Add(const Value1, Value2: Expr): Expr;
  -
  -    class operator Multiply(const Value1: Variable; const Value2: Expr): Expr;
  -    class operator Multiply(const Value1: Expr; const Value2: Variable): Expr;
       class operator Multiply(const Value1, Value2: Expr): Expr;
  -
  -    class operator Subtract(const Value1: Variable; const Value2: Expr): Expr;
  -    class operator Subtract(const Value1: Expr; const Value2: Variable): Expr;
       class operator Subtract(const Value1, Value2: Expr): Expr;
  -
       class operator Equal(const Value1, Value2: Expr): Expr;
       class operator NotEqual(const Value1, Value2: Expr): Expr;
       class operator LessThan(const Value1, Value2: Expr): Expr;
  
positive.code:   result.FNode := TBinaryOpNodeImpl.Create(boGreaterEq, Value1.FNode, Value2.FNode);
  end;
  
  class operator Expr.Add(const Value1: Expr.Variable; const Value2: Expr): Expr;
  begin
    result := Expr(Value1) + Value2;
  end;
  
  class operator Expr.Add(const Value1: Expr; const Value2: Expr.Variable): Expr;
  begin
    result := Value1 + Expr(Value2);
  end;
  
  class operator Expr.Implicit(const Value: Expr.Constant): Expr;
  begin
    result.FNode := TConstantNodeImpl.Create(Value);
  
negative.code: class operator Expr.NotEqual(const Value1, Value2: Expr): Expr;
  begin
    result.FNode := TBinaryOpNodeImpl.Create(boNotEq, Value1.FNode, Value2.FNode);
  end;
  
  class operator Expr.Subtract(const Value1, Value2: Expr): Expr;
  