anchor.diff:      }
   
       for (VM.Vector3 key in avg.keys) {
  -      avg[key] = avg[key] / (0.0 + cnt[key]);
  +      avg[key] = avg[key]..normalize();
       }
       List<VM.Vector3> normals = new List<VM.Vector3>(vertices.length);
  -    for (int i =0 ; i < vertices.length; ++i) {
  -      normals[i] =  avg[vertices[i]];
  +    for (int i = 0; i < vertices.length; ++i) {
  +      normals[i] = avg[vertices[i]];
       }
       attributes[aNormal] = normals;
     }
  -
  -
   
     void GenerateRadialNormals(VM.Vector3 center) {
       VM.Vector3 norm = new VM.Vector3.zero();
  
positive.code:       if (f.d > maxIndexFace4) maxIndexFace4 = f.d;
      }
  
      final int n = vertices.length ~/ 3;
      assert(n >= 0);
      assert(maxIndexFace3 < n);
      assert(maxIndexFace4 < n);
  
      for (String canonical in attributes.keys) {
        assert(attributes[canonical].length == vertices.length,
  
negative.code:     }
    }
  
    void AddVerticesFace3TakeOwnershipt(List<VM.Vector3> vs) {
      assert(vs.length == 3);
      int i = vertices.length;
      _faces3.add(new Face3(i + 0, i + 1, i + 2));
      for (VM.Vector3 v in vs) {
        vertices.add(v);
      }
    }
  
    void AddAttributeDouble(String canonical, double v) {
      List<double> ts = attributes[canonical];
      ts.add(v);
    }
  
    void AddAttributesDouble(String canonical, List<double> lst) {
      List<double> ts = attributes[canonical];
      for (double v in lst) {
        ts.add(v);
      }
    }
  
    void AddAttributeVector2(String canonical, VM.Vector2 v) {
      List<VM.Vector2> ts = attributes[canonical];
      ts.add(v.clone());
    }
  
    void AddAttributesVector2(String canonical, List<VM.Vector2> lst) {
      List<VM.Vector2> ts = attributes[canonical];
      for (VM.Vector2 v in lst) {
        ts.add(v.clone());
      }
    }
  
    void AddAttributesVector2TakeOwnership(
        String canonical, List<VM.Vector2> lst) {
      List<VM.Vector2> ts = attributes[canonical];
      for (VM.Vector2 v in lst) {
        ts.add(v);
      }
    }
  
    void AddAttributeVector3(String canonical, VM.Vector3 v) {
      List<VM.Vector3> ts = attributes[canonical];
      ts.add(v.clone());
    }
  
    void AddAttributesVector3(String canonical, List<VM.Vector3> lst) {
      List<VM.Vector3> ts = attributes[canonical];
      for (VM.Vector3 v in lst) {
        ts.add(v.clone());
      }
    }
  
    void AddAttributesVector3TakeOwnership(
        String canonical, List<VM.Vector3> lst) {
      List<VM.Vector3> ts = attributes[canonical];
      for (VM.Vector3 v in lst) {
        ts.add(v);
      }
    }
  
    void AddAttributeVector4(String canonical, VM.Vector4 v) {
      List<VM.Vector4> ts = attributes[canonical];
      ts.add(v.clone());
    }
  
    void AddAttributesVector4(String canonical, List<VM.Vector4> lst) {
      List<VM.Vector4> ts = attributes[canonical];
      for (VM.Vector4 v in lst) {
        ts.add(v.clone());
      }
    }
  
    void AddAttributesVector4TakeOwnership(
        String canonical, List<VM.Vector4> lst) {
      List ts = attributes[canonical];
      for (VM.Vector4 v in lst) {
        ts.add(v);
      }
    }
  
  