anchor.diff:            .openRead()
             .transform(UTF8.decoder)
             .transform(new LineSplitter())
  -          .transform(new LogItemTransformer())
  +          .transform(new LogItemTransformer(allowNonSequentialMsgs: true))
             .handleError((e, s) {
           ++mapper.readFailureCount;
           print("Error reading line\n${trim300(e.toString())}\n$s");
  
positive.code:       var stopwatch = new Stopwatch()..start();
  
        // Initialize query specific objects
        TestMapper mapper = new TestMapper(new CompletionMapper(), file.path);
  
        // Extraction
        await mapper.init({}, (String key, value) {
  
negative.code:       print('extraction complete in ${stopwatch.elapsedMilliseconds} ms');
      }
    }
    // print('----- reducing');
    //
    // // Initialize query specific objects
    // var reducer = completionReducer;
    // var reductionMerge = completionReductionMerge;
    //
    // // Reduce the information into two separate result maps
    // var reduced1 = <String, dynamic>{};
    // var reduced2 = <String, dynamic>{};
    // int index = 0;
    // while (index < extracted.length / 2) {
    //   reduced1 = reducer(extracted[index][0], extracted[index][1], reduced1);
    //   ++index;
    // }
    // print(reduced1);
    // while (index < extracted.length) {
    //   reduced2 = reducer(extracted[index][0], extracted[index][1], reduced2);
    //   ++index;
    // }
    // print(reduced2);
    //
    // // Merge the result maps
    // var reduced = reductionMerge(reduced1, reduced2);
    // print(reduced);
  }
  
  /// [TestMapper] wraps another mapper with exception handling
  