anchor.diff:  
     /**
      * Creates a number literal with given value.
  -   */
  -  Number(num value): super(value);
  +   * Always holds a double internally.
  +   */
  +  Number(num value): super(value.toDouble());
   
     bool isConstant() => true;
   
  -  num getConstantValue() => value;
  +  double getConstantValue() => value;
   
     evaluate(EvaluationType type, ContextModel context) {
       if (type == EvaluationType.REAL) {
  
positive.code:    */
    Variable(String this.name);
  
    Expression derive(String toVar) => name == toVar ? new Number(1) : new Number(0);
  
    String toString() => '$name';
  
  
negative.code: 
        // Interpret vector elements as REAL.
        if (length == 2) {
          double x,y;
          x = elements[0].evaluate(elementType, context);
          y = elements[1].evaluate(elementType, context);
          return new Vector2(x, y);
        }
  
        if (length == 3) {
          double x,y,z;
          x = elements[0].evaluate(elementType, context);
          y = elements[1].evaluate(elementType, context);
          z = elements[2].evaluate(elementType, context);
          return new Vector3(x, y, z);
        }
  
        if (length == 4) {
          double x,y,z,w;
          x = elements[0].evaluate(elementType, context);
          y = elements[1].evaluate(elementType, context);
          z = elements[2].evaluate(elementType, context);
          w = elements[3].evaluate(elementType, context);
          return new Vector4(x, y, z, w);
        }
  
        if (length > 4) {
  