code: function Vector2D(x, y) {
          if (x instanceof Vector2D) {
              this.x = x.x;
              this.y = x.y;
          } else if (arguments.length === 2) {
              this.x = x;
              this.y = y;
          } else if (arguments.length > 0)
              throw "Unexpected number of arguments for Vector2D()";
      }
docs: @
  #Crafty.math.Vector2D
  @category 2D
  @kind Class
  @public
  
  @class This is a general purpose 2D vector class
  
  Vector2D has the following constructors:
  
  @sign public {Vector2D} new Vector2D();
  @returns {Vector2D} A new vector with x and y equal to 0
  
  @sign public {Vector2D} new Vector2D(Number x, Number y);
  @param {Number} x - The initial x value
  @param {Number} y - The initial y value
  @returns {Vector2D} - A new vector with the given x and y values
  
  @sign public {Vector2D} new Vector2D(Vector2D vector);
  @param {Vector2D} vector - A vector to copy
  @returns {Vector2D} A new vector with the copied x and y values
  
  @example
  ```
  var v1 = new Crafty.math.Vector2D(3, 5);
  var v2 = new Crafty.math.Vector2D(v1);
  ```