anchor.diff:                  : WEBGL.UNSIGNED_SHORT,
               0);
         } else {
  -        gl.drawArrays(WEBGL.TRIANGLES, 0, numItems);
  -      }
  -    }
  -    if (debug) print(gl.getProgramInfoLog(_program));
  -  }
  -
  -  void End(gl, bool debug) {
  +        _gl.drawArrays(WEBGL.TRIANGLES, 0, numItems);
  +      }
  +    }
  +    if (debug) print(_gl.getProgramInfoLog(_program));
  +  }
  +
  +  void End(bool debug) {
       if (debug) print("[${name} unsetting attributes");
       for (String canonical in _attributeLocations.keys) {
         int index = _attributeLocations[canonical];
         if (canonical.startsWith("ia")) {
           _extInstancedArrays.vertexAttribDivisorAngle(index, 0);
         }
  -      gl.disableVertexAttribArray(index);
  +      _gl.disableVertexAttribArray(index);
       }
     }
   }
  
positive.code:     }
  
      for (String v in _shaderObjectV.uniformVars.keys) {
        _uniformLocations[v] = gl.getUniformLocation(_program, v);
      }
  
      for (String v in _shaderObjectF.uniformVars.keys) {
        // This can happen! Example both shaders use uTime.
        // assert(!uniformLocations.containsKey(v));
        _uniformLocations[v] = gl.getUniformLocation(_program, v);
      }
    }
  
  
negative.code:     for (Node node in objects) {
        if (node.enabled) node.draw(this, mvMatrix);
      }
      _program.End(debug);
    }
  }
  