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