anchor.diff:    static IMap<String, IList<Bit>> _buildCodeBook(_HuffmanNode tree) {
       IMap<String, IList<Bit>> buildCodes(_HuffmanNode node, IMap<String, IList<Bit>> codes, IList<Bit> code) => node.fold(
           (internalNode) {
  -          final leftCodes =  buildCodes(internalNode.left, codes, cons(Bit.ZERO, code));
  +          final leftCodes = buildCodes(internalNode.left, codes, cons(Bit.ZERO, code));
             return buildCodes(internalNode.right, leftCodes, cons(Bit.ONE, code));
           }, (leafNode) {
             return codes.put(leafNode.char, code.reverse());
  
positive.code:   static Option<_HuffmanNode> _buildTree(AVLTree<_HuffmanNode> nodes) => nodes.min().map((l) {
      final withoutL = nodes.remove(l);
      return withoutL.min().bind((r) {
        final withoutR = withoutL.remove(r);
        return _buildTree(withoutR.insert(new _InternalHuffmanNode(l.frequency+r.frequency, l.char+r.char, l, r)));
      }) | l;
    });
  
  
negative.code:       // Technique: Folding an IMap into an AVLTree of leaf nodes, for use as a priority queue
        final AVLTree<_HuffmanNode> leafNodes = characterFrequencies
            .foldLeftKV(new AVLTree(_HuffmanNode.order, emptyAVLNode()), (t, char, freq) => t.insert(new _LeafHuffmanNode(freq, char)));
        return _buildTree(leafNodes).map((tree) => new HuffmanCodec._internal(tree, _buildCodeBook(tree)));
      }
    }
  
  