anchor.diff:          constructors: true,
           returnValue: true,
           typeNames: true,
  -        voidReturn: true);
  +        voidReturn: true,
  +        methodBody: true);
     }
   
     test_Assert() async {
       addTestSource('main() {assert(^)}');
  -    await assertOpType(constructors: true, returnValue: true, typeNames: true);
  +    await assertOpType(
  +        constructors: true,
  +        returnValue: true,
  +        typeNames: true,
  +        functionBody: true);
     }
   
     test_AssertInitializer() async {
       addTestSource('class C { C() : assert(^); }');
  -    await assertOpType(constructors: true, returnValue: true, typeNames: true);
  +    await assertOpType(
  +        constructors: true,
  +        returnValue: true,
  +        typeNames: true,
  +        constructorBody: true);
     }
   
     test_AssignmentExpression_RHS() async {
       // SimpleIdentifier  VariableDeclaration  VariableDeclarationList
       // VariableDeclarationStatement  Block
       addTestSource('class A {} main() {int a; int b = ^}');
  -    await assertOpType(constructors: true, returnValue: true, typeNames: true);
  +    await assertOpType(
  +        constructors: true,
  +        returnValue: true,
  +        typeNames: true,
  +        functionBody: true);
     }
   
     test_AssignmentExpression_type() async {
  
positive.code:   test_FunctionDeclaration_inStarDocComment() async {
      // Comment  FunctionDeclaration  CompilationUnit
      addTestSource('/** ^ */ zoo(z) { } String name; ');
      await assertOpType();
    }
  
    test_FunctionDeclaration_inStarDocComment2() async {
      // Comment  FunctionDeclaration  CompilationUnit
      addTestSource('/**  *^/ zoo(z) { } String name;');
      await assertOpType();
    }
  
    test_FunctionDeclaration_returnType() async {
  
negative.code:         constructors: true,
          returnValue: true,
          typeNames: true,
          voidReturn: true,
          functionBody: true);
    }
  
    test_Block_catch_3b() async {
  