code: protected void record( final CompilationUnit unit,
                             final Node compilationUnitNode ) throws Exception {
          LOGGER.debug("recording unit comments");
          recordComments(unit, compilationUnitNode);
  
          LOGGER.debug("recording unit import nodes");
          recordImports(unit, compilationUnitNode);
  
          LOGGER.debug("recording unit compiler messages");
          recordCompilerMessages(unit, compilationUnitNode);
  
          LOGGER.debug("recording unit package nodes");
          final Node pkgNode = recordPackage(unit, compilationUnitNode);
  
          LOGGER.debug("recording unit type nodes");
          recordTypes(unit, compilationUnitNode, pkgNode);
  
          LOGGER.debug("recording unit source reference");
          recordSourceReference(unit, compilationUnitNode);
  
          compilationUnitNode.setProperty(ClassFileSequencerLexicon.SEQUENCED_DATE, this.context.getTimestamp());
      }
docs: <pre>
  CompilationUnit:
  [ PackageDeclaration ]
  { ImportDeclaration }
  { TypeDeclaration | EnumDeclaration | AnnotationTypeDeclaration | ; }
  </pre>
  
  @param unit the {@link CompilationUnit compilation unit} being recorded (cannot be <code>null</code>)
  @param compilationUnitNode the output node associated with the compilation unit (cannot be <code>null</code>)
  @throws Exception if there is a problem