anchor.diff:     * (The input format is the same used by the ImageData class, which can be created
      * from a canvas element.)
      */
  -  IndexedAnimation(this.width, this.height, Iterable<List<int>> rgbaFrames) {
  +  _IndexedAnimation(this.width, this.height, Iterable<List<int>> rgbaFrames) {
       for (var frame in rgbaFrames) {
         frames.add(colors.indexImage(width, height, frame));      
       }
  
positive.code:  * which can be created from a canvas element.)
   */
  Uint8List makeGif(int width, int height, List<int> rgba) {
    return new IndexedImage(width, height, rgba).encodeGif();  
  }
  
  /**
  
negative.code:   
    /// Returns the bytes of an animated GIF.
    Uint8List build(int framesPerSecond) {
      return new _IndexedAnimation(width, height, _frames).encodeGif(framesPerSecond); 
    }
  }
  
  const maxColorBits = 7;
  const maxColors = 1<<maxColorBits;
  
  class _IndexedImage {
    final int width;
    final int height;
    final colors = new _ColorTable();
    List<int> pixels;
  
    _IndexedImage(this.width, this.height, List<int> rgba) {   
      pixels = colors.indexImage(width, height, rgba);    
      colors.finish();
    }
  