anchor.diff:  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: Expr.Variable; const Value2: Expr): Expr;
  -begin
  -  result := Expr(Value1) - Value2;
  -end;
  -
  -class operator Expr.Subtract(const Value1: Expr; const Value2: Expr.Variable): Expr;
  -begin
  -  result := Value2 - Expr(Value2);
   end;
   
   class operator Expr.Subtract(const Value1, Value2: Expr): Expr;
  
positive.code:   result.FNode := TBinaryOpNodeImpl.Create(boMul, Value1.FNode, Value2.FNode);
  end;
  
  class operator Expr.Multiply(const Value1: Expr.Variable; const Value2: Expr): Expr;
  begin
    result := Expr(Value1) * Value2;
  end;
  
  class operator Expr.Multiply(const Value1: Expr; const Value2: Expr.Variable): Expr;
  begin
    result := Value1 * Expr(Value2);
  end;
  
  class operator Expr.Negative(const Value: Expr): Expr;
  begin
    result.FNode := TUnaryOpNodeImpl.Create(uoNegate, Value.FNode);
  
negative.code:   result.FNode := TBinaryOpNodeImpl.Create(boGreaterEq, Value1.FNode, Value2.FNode);
  end;
  
  class operator Expr.Implicit(const Value: Expr.Constant): Expr;
  begin
    result.FNode := TConstantNodeImpl.Create(Value);
  