anchor.diff:        addHunk(m2[i], 2);
       }
   
  -    hunks.sort();
  +    hunks.sort((a, b) {
  +      // a[0] file1 offset
  +      // a[1] side
  +      if (a[0] != b[0]) {
  +        return a[0].compareTo(b[0]);
  +      } else {
  +        return a[1].compareTo(b[1]);
  +      }
  +    });
   
       List result = [];
       int commonOffset = 0;
  
positive.code:     int tail1 = file1.length;
      int tail2 = file2.length;
  
      Map chunkDescription(file, int offset, int length) {
        List chunk = [];
        for (int i = 0; i < length; i++) {
          chunk.add(file[offset + i]);
        }
  
        // TODO(adam): class `ChunkDescription`
        return {"offset": offset, "length": length, "chunk": chunk};
      }
  
      // TODO(adam): class `Candidate`
      var candidate = longest_common_subsequence(file1, file2);
  
  
negative.code: 
      List<List> hunks = [];
      void addHunk(h, int side) {
        hunks.add([h["file1"][0], side, h["file1"][1], h["file2"][0], h["file2"][1]]);
      }
  
      for (int i = 0; i < m1.length; i++) {
  