anchor.diff:    return md;
   }
   
  -MeshData ExtractWireframeNormals(ShaderProgram prog, MeshData md, [scale = 1.0]) {
  +MeshData ExtractWireframeNormals(ShaderProgram prog, MeshData md,
  +    [scale = 1.0]) {
     assert(md._drawMode == GL_TRIANGLES);
     MeshData out = prog.MakeMeshData(md.name, GL_LINES);
     final Float32List vertices = md.GetAttribute(aVertexPosition);
  
positive.code:       _indexBufferType = GL_UNSIGNED_INT;
      }
  
      if (_locationMap != null) {
        _cgl.bindVertexArray(_vao);
      }
      _cgl.ChangeElementArrayBuffer(_indexBuffer, _faces as TypedData);
    }
  
  
negative.code: 
  void _GeometryBuilderAttributesToMeshData(GeometryBuilder gb, MeshData md) {
    for (String canonical in gb.attributes.keys) {
      if (!md.SupportsAttribute(canonical)) {
        print("Dropping unnecessary attribute: ${canonical}");
        continue;
      }
      dynamic lst = gb.attributes[canonical];
      ShaderVarDesc desc = RetrieveShaderVarDesc(canonical);
  
      //print("${md.name} ${canonical} ${lst}");
      switch (desc.type) {
        case VarTypeVec2:
  