anchor.diff:     * Possible simplifications:
      *
      * 1. a - 0 = a
  -   * 2. 0 - a = a
  +   * 2. 0 - a = - a
      * 3. a - -(b) = a + b
      */
     Expression simplify() {
       Expression firstOp = first.simplify();
       Expression secondOp = second.simplify();
   
  -    if (_isNumber(firstOp, 0)) {
  -      return secondOp;
  -    }
  -
       if (_isNumber(secondOp, 0)) {
         return firstOp;
       }
   
  +    if (_isNumber(firstOp, 0)) {
  +      return -secondOp;
  +    }
  +    
       if (secondOp is UnaryMinus) {
         return firstOp + (secondOp as UnaryMinus).exp; // a - -(b) = a + b
       }
  
positive.code: 
      // if temp result is not set, we return a multiplication
      if (tempResult == null) {
        return new Times(firstOp, secondOp);
      }
  
      // else we return the only constant and just check for sign before
  
negative.code:    * 3. -a / -b = a / b
     * 5. 0 / a = 0
     * 6. a / 1 = a
     */
    Expression simplify() {
      Expression firstOp = first.simplify();
  