anchor.diff:  import 'b.dart';
   ''');
     }
  -}
  +
  +  void test_unknownTokenBeforePrefixAfterDeferred() {
  +    testRecovery('''
  +import 'bar.dart' deferred s as p;
  +''', [ParserErrorCode.UNEXPECTED_TOKEN], '''
  +import 'bar.dart' deferred as p;
  +''');
  +  }
  +}
  +
  +/**
  + * Test how well the parser recovers when the clauses in a try statement are
  + * out of order.
  + */
  +@reflectiveTest
  +class TryStatementTest extends AbstractRecoveryTest {
  +  @failingTest
  +  void test_finallyBeforeCatch() {
  +    testRecovery('''
  +f() {
  +  try {
  +  } finally {
  +  } catch (e) {
  +  }
  +}
  +''', [/*ParserErrorCode.CATCH_AFTER_FINALLY*/], '''
  +f() {
  +  try {
  +  } catch (e) {
  +  } finally {
  +  }
  +}
  +''');
  +  }
  +
  +  @failingTest
  +  void test_finallyBeforeOn() {
  +    testRecovery('''
  +f() {
  +  try {
  +  } finally {
  +  } on String {
  +  }
  +}
  +''', [/*ParserErrorCode.CATCH_AFTER_FINALLY*/], '''
  +f() {
  +  try {
  +  } on String {
  +  } finally {
  +  }
  +}
  +''');
  +  }
  +}
  
positive.code: import 'bar.dart' d as p;
  ''', [ParserErrorCode.UNEXPECTED_TOKEN], '''
  import 'bar.dart' as p;
  ''');
    }
  
    void test_unknownTokenBeforePrefixAfterDeferred() {
      testRecovery('''
  import 'bar.dart' deferred s as p;
  ''', [ParserErrorCode.UNEXPECTED_TOKEN], '''
  import 'bar.dart' deferred as p;
  ''');
    }
  
  
negative.code:     // Parser crashes
      testRecovery('''
  class A implements B with C extends D {}
  ''', [
        ParserErrorCode.IMPLEMENTS_BEFORE_WITH,
        ParserErrorCode.WITH_BEFORE_EXTENDS
      ], '''
  class A extends D with C implements B {}
  ''');
    }
  