anchor.diff:    "eventType" : "logEvent"
   },{
   '''
  -              .codeUnits]);
  -          });
  -          when(mockProcess.stderr)
  -            .thenAnswer((Invocation invocation) => const Stream<List<int>>.empty());
  -          // Delay return of exitCode until after stdout stream data, since it terminates the logger.
  -          when(mockProcess.exitCode)
  -            .thenAnswer((Invocation invocation) => Future<int>.delayed(Duration.zero, () => 0));
  -          return Future<Process>.value(mockProcess);
  -        });
  +          ));
   
           final IOSSimulator device = IOSSimulator(
             '123456',
  
positive.code:           '))))))))))',
            '#0      Object.noSuchMethod (dart:core-patch/dart:core/object_patch.dart:46)',
          ]);
        }, overrides: <Type, Generator>{
          ProcessManager: () => mockProcessManager,
          FileSystem: () => fileSystem,
          Platform: () => osx,
        });
  
        testUsingContext('log reader handles multiline messages', () async {
          when(mockProcessManager.start(any, environment: null, workingDirectory: null))
            .thenAnswer((Invocation invocation) {
            final Process mockProcess = MockProcess();
            when(mockProcess.stdout)
              .thenAnswer((Invocation invocation) {
              // Messages from 2017 should pass through, 2020 message should not
              return Stream<List<int>>.fromIterable(<List<int>>['''
  2017-09-13 15:26:57.228948-0700  localhost Runner[37195]: (Flutter) Single line message
  2017-09-13 15:26:57.228948-0700  localhost Runner[37195]: (Flutter) Multi line message
    continues...
  
negative.code: 
      group('unified logging', () {
        testUsingContext('log reader handles escaped multiline messages', () async {
          const String logPredicate = 'eventType = logEvent AND processImagePath ENDSWITH "Runner" '
            'AND (senderImagePath ENDSWITH "/Flutter" OR senderImagePath ENDSWITH "/libswiftCore.dylib" '
            'OR processImageUUID == senderImageUUID) AND NOT(eventMessage CONTAINS ": could not find icon '
            'for representation -> com.apple.") AND NOT(eventMessage BEGINSWITH "assertion failed: ") '
            'AND NOT(eventMessage CONTAINS " libxpc.dylib ")';
          fakeProcessManager.addCommand(const FakeCommand(
              command:  <String>[
                '/usr/bin/xcrun',
                'simctl',
                'spawn',
                '123456',
                'log',
                'stream',
                '--style',
                'json',
                '--predicate',
                logPredicate,
              ],
              stdout: '''
  },{
    "traceID" : 37579774151491588,
    "eventMessage" : "Single line message",
  