anchor.diff:  	CMethod.new('lerp', 'lerp', ['other', 't'], <<-CODE),
   	    GET_VECTOR2(self);
   		GET_VECTOR2(other);
  -	    VALUE result = vector2_alloc(cVector2);
  -		GET_VECTOR2(result);
  +		NEW_VECTOR2(result);
   		*result_vec = Lerp(*self_vec, *other_vec, NUM2DBL(t));
   	    return result;
   	CODE
   
   	CMethod.new('unary_minus', '-@', [], <<-CODE),
  -	    VALUE result = vector2_alloc(cVector2);
   		GET_VECTOR2(self);
  -		GET_VECTOR2(result);
  +		NEW_VECTOR2(result);
   	    *result_vec = -(*self_vec);
   	    return result;
   	CODE
  
positive.code: }
  
  #define GET_VECTOR2(name) Vector2d* name##_vec = GetVector2(name);
  #define GET_LONG(name) long name##_long = NUM2LONG(name);
  
  VALUE cVector2;
  
  
negative.code: 
  	CMethod.noargs_self('Vector2', 'SetZero', 'zero!'),
  
  	CMethod.get_elem('Vector2', 2),
  	CMethod.set_elem('Vector2', 2),
  
  	CMethod.set_method('Vector2', 2),
  
  	CMethod.new('dot', 'dot', ['other'], <<-CODE),
  	    GET_VECTOR2(self);
  