anchor.diff:        { $declaration=$aliasDeclaration.declaration; }
       | objectDeclaration
         { $declaration=$objectDeclaration.declaration; }
  -    | (VALUE_MODIFIER LBRACKET) => d1=destructure
  -      { $declaration = $d1.destructure; }
  -    | (VALUE_MODIFIER var ENTRY_OP) => d2=destructure
  -      { $declaration = $d2.destructure; }
       | setterDeclaration
         { $declaration=$setterDeclaration.declaration; }
       | voidOrInferredMethodDeclaration
  
positive.code:             ImportList importList = new ImportList(null); 
              $compilationUnit.setImportList(importList); }
      : ( 
          ca1=compilerAnnotations
          SEMICOLON
          { $compilationUnit.getCompilerAnnotations().addAll($ca1.annotations); }
        )?
        ( 
          importDeclaration 
          { importList.addImport($importDeclaration.importDeclaration); 
            $compilationUnit.connect(importList); }
        |
          (compilerAnnotations annotations MODULE)=>
          moduleDescriptor 
          { $compilationUnit.addModuleDescriptor($moduleDescriptor.moduleDescriptor); }
        |
          (compilerAnnotations annotations PACKAGE)=>
          packageDescriptor
          { $compilationUnit.addPackageDescriptor($packageDescriptor.packageDescriptor); }
        |
          ca2=compilerAnnotations declaration
          { if ($declaration.declaration instanceof 
                    com.redhat.ceylon.compiler.typechecker.tree.Tree.Declaration) {
                com.redhat.ceylon.compiler.typechecker.tree.Tree.Declaration dec = 
                    (com.redhat.ceylon.compiler.typechecker.tree.Tree.Declaration) 
                        $declaration.declaration;
                $compilationUnit.addDeclaration(dec); 
                $declaration.declaration.getCompilerAnnotations().addAll($ca2.annotations); } }
        | RBRACE
          { displayRecognitionError(getTokenNames(),
                new MismatchedTokenException(EOF, input)); }
        )*
        EOF
      ;
  
  moduleDescriptor returns [ModuleDescriptor moduleDescriptor]
  
negative.code:       SEMICOLON
        { $declaration=new BrokenDeclaration($SEMICOLON); }*/
      )
      { if ($declaration!=null)
            $declaration.setAnnotationList($annotations.annotationList); }
      ;
  
  annotatedDeclarationStart
  