anchor.diff:    // because Matrix also creates a new Vector...
     Matrix4 m = null;
     List<double> _v = new List<double>(4);
  -  
  -  bool unproject( Matrix4 view, Matrix4 proj, List<num> viewport) {
  -    
  -    if( m == null)
  -      m = new Matrix4(); 
  +
  +  bool unproject(Matrix4 view, Matrix4 proj, List<num> viewport) {
  +
  +    if (m == null) m = new Matrix4();
   
       _v[0] = (array[0] - viewport[0]) * 2.0 / viewport[2] - 1.0;
       _v[1] = (array[1] - viewport[1]) * 2.0 / viewport[3] - 1.0;
       _v[2] = 2.0 * array[2] - 1.0;
       _v[3] = 1.0;
  -    
  +
       m.setElements(proj);
  -    m.multiplyWith( view );
  -    if(!m.invert()) { return false; }
  -    
  -    m.multiplyVec4( _v);
  -    if(_v[3] == 0.0) { return false; }
  +    m.multiplyWith(view);
  +    if (!m.invert()) {
  +      return false;
  +    }
  +
  +    m.multiplyVec4(_v);
  +    if (_v[3] == 0.0) {
  +      return false;
  +    }
   
       array[0] = _v[0] / _v[3];
       array[1] = _v[1] / _v[3];
       array[2] = _v[2] / _v[3];
  -    
  +
       return true;
     }
  - 
  +
     String toString() {
       return array.toString();
     }
  
positive.code:     }
      return this;
    }
    
    // I think the from and to is swapped, but it's the same in glmatrix...
    Vector direction( Vector from, Vector to)
    {
      double x = from[0] - to[0],
          y = from[1] - to[1],
          z = from[2] - to[2],
          len = Math.sqrt(x * x + y * y + z * z);
  
      if (len==0) {
        array[0] = 0.0;
        array[1] = 0.0;
        array[2] = 0.0;
  
negative.code:     array[2] = -array[2];
      return this;
    }
  
    Vector normalize() {
      double x = array[0],
          y = array[1],
          z = array[2];
      double len = Math.sqrt(x * x + y * y + z * z);
  
      if (len == 0) {
        array[0] = 0.0;
        array[1] = 0.0;
        array[2] = 0.0;
  