anchor.diff:      defineReflectiveTests(ClassDeclarationTest);
       defineReflectiveTests(CompilationUnitMemberTest);
       defineReflectiveTests(ImportDirectiveTest);
  +    defineReflectiveTests(TryStatementTest);
     });
   }
   
  
positive.code:     // Parser crashes
      testRecovery('''
  class A implements B with C extends D {}
  ''', [ParserErrorCode.IMPLEMENTS_BEFORE_WITH], '''
  class A extends D with C implements B {}
  ''');
    }
  
negative.code: 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 {
    }
  }
  ''');
    }
  }
  