anchor.diff:      return b;
     }
   
  +  disableAllAttrib([ProgramContext exceptFrom]) {
  +    var except = (exceptFrom == null)? []:exceptFrom._attributes.keys;
  +    _attributes.forEach((k,v){
  +      if (v != -1 && !except.contains(k)) {
  +        gl.disableVertexAttribArray(v);
  +      }
  +    });
  +  }
     delete() {
       if (_fragShader != null) {
         gl.detachShader(program, _fragShader);
  
positive.code:   final _ctxs = new List<ProgramContext>();
    final _setups = new List<RunOnRenderingContext>();
    final _beforeAlls = new List<RunOnRenderingContext>();
    final _afterAlls =  new List<RunOnRenderingContext>();
    final _teardowns = new List<RunOnRenderingContext>();
    final _onAddProgramCtxs = new List<RunOnProgramContextRegistration>();
    final _onRemoveProgramCtxs = new List<RunOnProgramContextRegistration>();
    final _autoData = new Map<String, RunOnProgramContext>();
    FBO fbo;
  
    ProgramsRunner(this.gl);
  
  
negative.code: part 'glf/mesh_primitives.dart';
  part 'glf/textures.dart';
  part 'glf/viewport.dart';
  part 'glf/filters_2d.dart';
  
  // follow OpenGL ES name but replace "gl_" prefix by "_" (see [GLSL QuickRef](http://mew.cx/glsl_quickref.pdf) )
  const SFNAME_VERTICES = "_Vertex";
  