anchor.diff:        }
       }
       if (wrapped) {
  -      assert(_faces4.length == w * h);
  +      assert(_faces4.length == w * h, "face4 length mismatch");
       }
     }
   
  
positive.code: }
  
  /// Helper for Shader independent Mesh creation.
  /// Supports Faces with 3 and 4 Nodes.
  /// Use  GeometryBuilderToMeshData() to create the Mesh
  /// for a specific Shader.
  class GeometryBuilder {
    GeometryBuilder([this.pointsOnly = false]);
  
    final bool pointsOnly;
    List<Face3> _faces3 = [];
    List<Face4> _faces4 = [];
    List<VM.Vector3> vertices = [];
    Map<String, List> attributes = {};
  
    void EnableAttribute(String canonical) {
      assert(!attributes.containsKey(canonical));
      assert(canonical.startsWith("a"));
      ShaderVarDesc desc = RetrieveShaderVarDesc(canonical);
      switch (desc.type) {
        case VarTypeVec2:
  
negative.code:   }
  
    void AddFace3(int a, int b, int c) {
      assert(pointsOnly == false, "pointsOnly must be false");
      _faces3.add(Face3(a, b, c));
    }
  
    void AddFace4(int a, int b, int c, int d) {
      assert(pointsOnly == false, "pointsOnly must be false");
  
      _faces4.add(Face4(a, b, c, d));
    }
  
    void AddFaces3(int n) {
      assert(pointsOnly == false, "pointsOnly must be false");
  
      int v = vertices.length;
      for (int i = 0; i < n; i++, v += 3) {
        _faces3.add(Face3(v + 0, v + 1, v + 2));
  