anchor.diff:      StringBuffer logEntry;
       for (String line in new LineSplitter().convert(expanded)) {
         if (line.startsWith("~")) {
  +        ignorePartialMsgLines = false;
           if (logEntry != null) {
             _sink.add(logEntry.toString());
           }
           logEntry = new StringBuffer()..write(line);
         } else {
  +        // If a non-sequential block was encountered
  +        // then ignore any partial msg lines at the beginning of the block
  +        if (ignorePartialMsgLines) continue;
  +
  +        // Build the log entry to be forwarded
           if (logEntry != null) {
             logEntry.writeln();
             logEntry.write(line);
  
positive.code: 
    // Sanity check tracking: {"sessionID":"1422988642527.3444824218750","msgN":0,
    String sessionID;
    int lastMsgN;
  
    /// The carry-over from the previous chunk.
    String _carry;
  
negative.code: 
    _LogItemSink _logSink;
  
    LogItemTransformer({this.allowNonSequentialMsgs: false});
  
    /// The MsgN of the last message in the session log.
    int get lastMsgN => _logSink.lastMsgN;
  
    /// The number of missing messages.
    int get missingMsgCount => _logSink.missingMsgCount;
  
    @override
    List<String> convert(String input) {
  