anchor.diff:  
     void _animate(double timeNow) {
       if (_lastTime != 0) {
  -        double elapsed = timeNow - _lastTime;
  -
  -        _xRot += (_xSpeed * elapsed) / 1000.0;
  -        _yRot += (_ySpeed * elapsed) / 1000.0;
  +      double elapsed = timeNow - _lastTime;
  +
  +      _xRot += (_xSpeed * elapsed) / 1000.0;
  +      _yRot += (_ySpeed * elapsed) / 1000.0;
       }
       _lastTime = timeNow;
     }
   
     void _handleKeys() {
  -    if (_currentlyPressedKeys[33]) {
  +    if (_currentlyPressedKeys.elementAt(33) != null && _currentlyPressedKeys.elementAt(33)) {
         // Page Up
         _zPos -= 0.05;
       }
  -    if (_currentlyPressedKeys[34]) {
  +    if (_currentlyPressedKeys.elementAt(34) != null && _currentlyPressedKeys.elementAt(34)) {
         // Page Down
         _zPos += 0.05;
       }
  -    if (_currentlyPressedKeys[37]) {
  +    if (_currentlyPressedKeys.elementAt(37) != null && _currentlyPressedKeys.elementAt(37)) {
         // Left cursor key
         _ySpeed -= 1;
       }
  -    if (_currentlyPressedKeys[39]) {
  +    if (_currentlyPressedKeys.elementAt(39) != null && _currentlyPressedKeys.elementAt(39)) {
         // Right cursor key
         _ySpeed += 1;
       }
  -    if (_currentlyPressedKeys[38]) {
  +    if (_currentlyPressedKeys.elementAt(38) != null && _currentlyPressedKeys.elementAt(38)) {
         // Up cursor key
         _xSpeed -= 1;
       }
  -    if (_currentlyPressedKeys[40]) {
  +    if (_currentlyPressedKeys.elementAt(40) != null && _currentlyPressedKeys.elementAt(40)) {
         // Down cursor key
         _xSpeed += 1;
       }
  
positive.code:       gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);
        vTextureCoord = aTextureCoord;
      }
      """;
  
      // fragment shader source code. uColor is our variable that we'll
      // use to animate color
      String fsSource = """
      precision mediump float;
  
      varying vec2 vTextureCoord;
  
      uniform sampler2D uSampler;
  
      void main(void) {
        gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));
      }
      """;
  
  
negative.code:     _uSampler = _gl.getUniformLocation(_shaderProgram, "uSampler");
      _uUseLighting = _gl.getUniformLocation(_shaderProgram, "uUseLighting");
      _uAmbientColor = _gl.getUniformLocation(_shaderProgram, "uAmbientColor");
      _uLightingDirection = _gl.getUniformLocation(_shaderProgram, "uLightingDirection");
      _uDirectionalColor = _gl.getUniformLocation(_shaderProgram, "uDirectionalColor");
    }
  
    void _initBuffers() {
  