anchor.diff:      int nextMsgN = dataMap["msgN"];
       if (lastMsgN != null) {
         if (nextMsgN != lastMsgN + 1) {
  -        throw "Non-sequential MsgN in file: $lastMsgN, $nextMsgN";
  +        if (allowNonSequentialMsgs) {
  +          throw "Non-sequential MsgN in file: $lastMsgN, $nextMsgN";
  +        }
  +        hasNonSequentialMsgs = true;
         }
       }
       lastMsgN = nextMsgN;
  
positive.code:     if (sink is! StringConversionSink) {
        sink = new StringConversionSink.from(sink);
      }
      return new _LogItemSink(sink);
    }
  }
  
  
negative.code:   /// The carry-over from the previous chunk.
    String _carry;
  
    /// `true` if non-sequential message blocks should be tolerated
    /// or `false` if an exception should be thrown.
    /// If `true` then [hasNonSequentialMsgs] will be set `true`
    /// if a non sequential block is found.
    bool allowNonSequentialMsgs;
  
    /// `true` if [allowNonSequentialMsgs] is `true`
    /// and a non sequential block is found.
    bool hasNonSequentialMsgs = false;
  
    _LogItemSink(this._sink, this.allowNonSequentialMsgs);
  
    @override
    void addSlice(String chunk, int start, int end, bool isLast) {
  