docs: protected Node record( final EnumDeclaration enumType,
                             final Node parentNode ) throws Exception {
          final String name = enumType.getName().getFullyQualifiedName();
          final Node enumNode = parentNode.addNode(name, ClassFileSequencerLexicon.ENUM);
          enumNode.setProperty(ClassFileSequencerLexicon.NAME, name);
          enumNode.setProperty(ClassFileSequencerLexicon.SEQUENCED_DATE, this.context.getTimestamp());
          enumNode.setProperty(ClassFileSequencerLexicon.INTERFACE, false);
  
          { // javadocs
              final Javadoc javadoc = enumType.getJavadoc();
  
              if (javadoc != null) {
                  record(javadoc, enumNode);
              }
          }
  
          { // modifiers
              final int modifiers = enumType.getModifiers();
  
              enumNode.setProperty(ClassFileSequencerLexicon.ABSTRACT, (modifiers & Modifier.ABSTRACT) != 0);
              enumNode.setProperty(ClassFileSequencerLexicon.FINAL, (modifiers & Modifier.FINAL) != 0);
              enumNode.setProperty(ClassFileSequencerLexicon.STATIC, (modifiers & Modifier.STATIC) != 0);
              enumNode.setProperty(ClassFileSequencerLexicon.STRICT_FP, (modifiers & Modifier.STRICTFP) != 0);
              enumNode.setProperty(ClassFileSequencerLexicon.VISIBILITY, getVisibility(modifiers));
          }
  
          { // annotations
              @SuppressWarnings( "unchecked" )
              final List<IExtendedModifier> modifiers = enumType.modifiers();
              recordAnnotations(modifiers, enumNode);
          }
  
          { // implements
              @SuppressWarnings( "unchecked" )
              final List<Type> interfaces = enumType.superInterfaceTypes();
  
              if ((interfaces != null) && !interfaces.isEmpty()) {
                  final String[] interfaceNames = new String[interfaces.size()];
                  final Node containerNode = enumNode.addNode(ClassFileSequencerLexicon.IMPLEMENTS, ClassFileSequencerLexicon.TYPES);
                  int i = 0;
  
                  for (final Type superInterfaceType : interfaces) {
                      interfaceNames[i] = getTypeName(superInterfaceType);
                      record(superInterfaceType, ClassFileSequencerLexicon.INTERFACE, containerNode);
                      ++i;
                  }
  
                  enumNode.setProperty(ClassFileSequencerLexicon.INTERFACES, interfaceNames);
              }
          }
  
          { // enum constants
              @SuppressWarnings( "unchecked" )
              final List<EnumConstantDeclaration> enumValues = enumType.enumConstants();
  
              if ((enumValues != null) && !enumValues.isEmpty()) {
                  final String[] values = new String[enumValues.size()];
                  final Node containerNode = enumNode.addNode(ClassFileSequencerLexicon.ENUM_CONSTANTS,
                                                              ClassFileSequencerLexicon.ENUM_CONSTANTS);
                  int i = 0;
  
                  for (final EnumConstantDeclaration enumConstant : enumValues) {
                      values[i++] = enumConstant.getName().getFullyQualifiedName();
                      record(enumConstant, containerNode);
                  }
  
                  enumNode.setProperty(ClassFileSequencerLexicon.ENUM_VALUES, values);
              }
          }
  
          recordBodyDeclarations(enumType, enumNode);
          recordSourceReference(enumType, enumNode);
          return enumNode;
      }