anchor.diff:  
       // if temp result is not set, we return a multiplication
       if (tempResult == null) {
  -      return new Times(firstOp, secondOp);
  +      tempResult = new Times(firstOp, secondOp);
  +      return negative ? -tempResult : tempResult;
       }
   
       // else we return the only constant and just check for sign before
  
positive.code:    * 3. -a / -b = a / b
     * 5. 0 / a = 0
     * 6. a / 1 = a
     *
     * This method throws an IntegerDivisionByZeroException,
     * if a divide by zero is encountered.
     */
    Expression simplify() {
      Expression firstOp = first.simplify();
  
negative.code:     // TODO cancel down/out? - needs equals on literals (and expressions?)!
    }
  
    /**
     * This method throws an [IntegerDivisionByZeroException],
     * if a divide by zero is encountered.
     */
    evaluate(EvaluationType type, ContextModel context) {
      var firstEval = first.evaluate(type, context);
      var secondEval = second.evaluate(type, context);
  