anchor.diff:      });
     }
   
  -
     WEBGL.Texture GetTexture() {
       return _texture;
     }
   
     void Install(WEBGL.RenderingContext gl) {
  -    LogError("abstract Install() called");
  -    assert(false);
  +    assert(false, "abstract Install() called");
     }
   
     void InstallAsCubeChild(WEBGL.RenderingContext gl) {
  -    LogError("abstract InstallAsCubeChild() called");
  -    assert(false);
  +    assert(false, "abstract InstallAsCubeChild() called");
     }
   
     // Primarly for image base texture so we can wait until the image has load
     Future<dynamic> GetFuture() {
       return null;
  +  }
  +
  +  @override
  +  String toString() {
  +    return "Texture[${_url}]";
     }
   }
   
  
positive.code:     _width = w;
      _height = h;
      gl.bindTexture(WEBGL.TEXTURE_2D, _texture);
      gl.texImage2DTyped(WEBGL.TEXTURE_2D, 0, _formatType, _width, _height, 0,
          _formatType, _dataType, _data);
      gl.bindTexture(WEBGL.TEXTURE_2D, null);
    }
  
negative.code:   final int _formatType;
    // e.g.  WEBGL.UNSIGNED_SHORT, WEBGL.UNSIGNED_BYTE. WEBGL.FLOAT
    final int _dataType;
    // null, Float32List, etc
    // null is required by the shadow example
    // There used to be a bug - this seems fixed now, cf.:
    // sdk: https://github.com/dart-lang/sdk/issues/23517
    var _data;
  
  