anchor.diff:      canvas.context2D.fillRect(i * width, 256, width, 256 * data[i] / max);
     }
   }
  +
  +class RiffChunk {
  +  String id;
  +  int length;
  +  String data;
  +  RiffChunk riff;
  +  RiffChunk list;
  +  RiffChunk(this.id, this.length, this.data);
  +}
positive.code:                           ..restore()
                            ..restore();
  
        window.requestAnimationFrame(analyzeAndRender);
      }
      analyzeAndRender(0);
    });
  }
  
  void visualize(CanvasElement canvas, List<num> data, int width, int max) {
  
negative.code:     var floatTimeDomainData = new Float32List(fftSize);
      var byteFrequencyData = new Uint8List(frequencyBinCount);
      var byteTimeDomainData = new Uint8List(fftSize);
  
  
      void analyzeAndRender(num time) {
        analyzer.getFloatFrequencyData(floatFrequencyData);
  