anchor.diff:  part of math;
   
  -/// Calculates the dot product of the [a] and [b] [Vec2] objects.
  -/// 
  -/// The dot product of two vectors is defined as
  -///     ax * bx + ay * by
  -/// 
  -/// This operation does not change this object.
  +/// Calculates the dot product of [a] and [b]
   double dot2(Vec2 a, Vec2 b) => a.x * b.x + a.y * b.y;
   
  -/// Calculates the cross product of the [a] and [b] [Vec2] objects.
  -/// 
  -/// The cross product of two vectors is defined as
  -///     ax * by - ay * bx
  -/// 
  -/// This operation does not change this object.
  +/// Calculates the cross product of the [a] and [b].
   double cross2(Vec2 a, Vec2 b) => a.x * b.y - a.y * b.x;
   
   class Vec2 {
  
positive.code:   /// This operation does not change this object.
    Vec2 operator -() => new Vec2(-x, -y);
    
    /// Multiplies each componenet of this [Vec2] with the corresponding component of [other] and returns the result.
    /// This operation does not change this object.
    Vec2 multiply(Vec2 other) => new Vec2(x * other.x, y * other.y);
    
    /// Divides each componenet of this [Vec2] by the corresponding component of [other] and returns the result.
    /// This operation does not change this object.
    Vec2 divide(Vec2 other) => new Vec2(x / other.x, y / other.y);
    
  
negative.code:   /// Creates a new [Vec2] pointing to (0;0).
    Vec2.zero() : this(0, 0);
    
    /// Creates a new [Vec2] pointing to (1;0).
    Vec2.unitX() : this(1, 0);
    
    /// Creates a new [Vec2] pointing to (0;1).
    Vec2.unitY() : this(0, 1);
    
    /// Creates a new [Vec2] from the coordinates of [t].
    Vec2.fromVector(Vec2 t) : this(t.x, t.y);
    
  