# Interface Visitor

All Known Implementing Classes:
  `BCELifier, DescendingVisitor, EmptyVisitor, StringRepresentation`

public interface Visitor
Interface to make use of the Visitor pattern programming style. I.e. a class that implements this interface can traverse the contents of a Java class just by calling the 'accept' method which all classes have.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `visitAnnotation(Annotations obj)`
  Visits an Annotations attribute.
  `void`
  `visitAnnotationDefault(AnnotationDefault obj)`
  Visits an AnnotationDefault attribute.
  `void`
  `visitAnnotationEntry(AnnotationEntry obj)`
  Visits an AnnotationEntry.
  `void`
  `visitBootstrapMethods(BootstrapMethods obj)`
  Visits a BootstrapMethods attribute.
  `void`
  `visitCode(Code obj)`
  Visits a Code attribute.
  `void`
  `visitCodeException(CodeException obj)`
  Visits a CodeException.
  `void`
  `visitConstantClass(ConstantClass obj)`
  Visits a ConstantClass.
  `void`
  `visitConstantDouble(ConstantDouble obj)`
  Visits a ConstantDouble.
  `default void`
  `visitConstantDynamic(ConstantDynamic constantDynamic)`
  Visits a ConstantDynamic.
  `void`
  `visitConstantFieldref(ConstantFieldref obj)`
  Visits a ConstantFieldref.
  `void`
  `visitConstantFloat(ConstantFloat obj)`
  Visits a ConstantFloat.
  `void`
  `visitConstantInteger(ConstantInteger obj)`
  Visits a ConstantInteger.
  `void`
  `visitConstantInterfaceMethodref(ConstantInterfaceMethodref obj)`
  Visits a ConstantInterfaceMethodref.
  `void`
  `visitConstantInvokeDynamic(ConstantInvokeDynamic obj)`
  Visits a ConstantInvokeDynamic.
  `void`
  `visitConstantLong(ConstantLong obj)`
  Visits a ConstantLong.
  `void`
  `visitConstantMethodHandle(ConstantMethodHandle obj)`
  Visits a ConstantMethodHandle.
  `void`
  `visitConstantMethodref(ConstantMethodref obj)`
  Visits a ConstantMethodref.
  `void`
  `visitConstantMethodType(ConstantMethodType obj)`
  Visits a ConstantMethodType.
  `void`
  `visitConstantModule(ConstantModule constantModule)`
  Visits a ConstantModule.
  `void`
  `visitConstantNameAndType(ConstantNameAndType obj)`
  Visits a ConstantNameAndType.
  `void`
  `visitConstantPackage(ConstantPackage constantPackage)`
  Visits a ConstantPackage.
  `void`
  `visitConstantPool(ConstantPool obj)`
  Visits a ConstantPool.
  `void`
  `visitConstantString(ConstantString obj)`
  Visits a ConstantString.
  `void`
  `visitConstantUtf8(ConstantUtf8 obj)`
  Visits a ConstantUtf8.
  `void`
  `visitConstantValue(ConstantValue obj)`
  Visits a ConstantValue attribute.
  `void`
  `visitDeprecated(Deprecated obj)`
  Visits a Deprecated attribute.
  `void`
  `visitEnclosingMethod(EnclosingMethod obj)`
  Visits an EnclosingMethod attribute.
  `void`
  `visitExceptionTable(ExceptionTable obj)`
  Visits an ExceptionTable attribute.
  `void`
  `visitField(Field obj)`
  Visits a Field.
  `void`
  `visitInnerClass(InnerClass obj)`
  Visits an InnerClass.
  `void`
  `visitInnerClasses(InnerClasses obj)`
  Visits an InnerClasses attribute.
  `void`
  `visitJavaClass(JavaClass obj)`
  Visits a JavaClass.
  `void`
  `visitLineNumber(LineNumber obj)`
  Visits a LineNumber.
  `void`
  `visitLineNumberTable(LineNumberTable obj)`
  Visits a LineNumberTable attribute.
  `void`
  `visitLocalVariable(LocalVariable obj)`
  Visits a LocalVariable.
  `void`
  `visitLocalVariableTable(LocalVariableTable obj)`
  Visits a LocalVariableTable attribute.
  `void`
  `visitLocalVariableTypeTable(LocalVariableTypeTable obj)`
  Visits a LocalVariableTypeTable attribute.
  `void`
  `visitMethod(Method obj)`
  Visits a Method.
  `default void`
  `visitMethodParameter(MethodParameter obj)`
  Visits a MethodParameter.
  `void`
  `visitMethodParameters(MethodParameters obj)`
  Visits a MethodParameters attribute.
  `default void`
  `visitModule(Module constantModule)`
  Visits a Module attribute.
  `default void`
  `visitModuleExports(ModuleExports constantModule)`
  Visits a ModuleExports entry.
  `default void`
  `visitModuleMainClass(ModuleMainClass obj)`
  Visits a ModuleMainClass attribute.
  `default void`
  `visitModuleOpens(ModuleOpens constantModule)`
  Visits a ModuleOpens entry.
  `default void`
  `visitModulePackages(ModulePackages constantModule)`
  Visits a ModulePackages attribute.
  `default void`
  `visitModuleProvides(ModuleProvides constantModule)`
  Visits a ModuleProvides entry.
  `default void`
  `visitModuleRequires(ModuleRequires constantModule)`
  Visits a ModuleRequires entry.
  `default void`
  `visitNestHost(NestHost obj)`
  Visits a NestHost attribute.
  `default void`
  `visitNestMembers(NestMembers obj)`
  Visits a NestMembers attribute.
  `void`
  `visitParameterAnnotation(ParameterAnnotations obj)`
  Visits a ParameterAnnotations attribute.
  `void`
  `visitParameterAnnotationEntry(ParameterAnnotationEntry obj)`
  Visits a ParameterAnnotationEntry.
  `default void`
  `visitRecord(Record obj)`
  Visits a `Record` object.
  `default void`
  `visitRecordComponent(RecordComponentInfo record)`
  Visits a `RecordComponentInfo` object.
  `void`
  `visitSignature(Signature obj)`
  Visits a Signature attribute.
  `void`
  `visitSourceFile(SourceFile obj)`
  Visits a SourceFile attribute.
  `void`
  `visitStackMap(StackMap obj)`
  Visits a StackMap attribute.
  `void`
  `visitStackMapEntry(StackMapEntry obj)`
  Visits a StackMapEntry.
  `default void`
  `visitStackMapType(StackMapType obj)`
  Visits a `StackMapType` object.
  `void`
  `visitSynthetic(Synthetic obj)`
  Visits a Synthetic attribute.
  `void`
  `visitUnknown(Unknown obj)`
  Visits an Unknown attribute.

- ## Method Details

  - ### visitAnnotation

    void visitAnnotation(Annotations obj)
    Visits an Annotations attribute.
    Parameters:
      `obj` - the attribute.
    Since:
      6.0

  - ### visitAnnotationDefault

    void visitAnnotationDefault(AnnotationDefault obj)
    Visits an AnnotationDefault attribute.
    Parameters:
      `obj` - the attribute.
    Since:
      6.0

  - ### visitAnnotationEntry

    void visitAnnotationEntry(AnnotationEntry obj)
    Visits an AnnotationEntry.
    Parameters:
      `obj` - the annotation entry.
    Since:
      6.0

  - ### visitBootstrapMethods

    void visitBootstrapMethods(BootstrapMethods obj)
    Visits a BootstrapMethods attribute.
    Parameters:
      `obj` - the attribute.
    Since:
      6.0

  - ### visitCode

    void visitCode(Code obj)
    Visits a Code attribute.
    Parameters:
      `obj` - the attribute.

  - ### visitCodeException

    void visitCodeException(CodeException obj)
    Visits a CodeException.
    Parameters:
      `obj` - the exception.

  - ### visitConstantClass

    void visitConstantClass(ConstantClass obj)
    Visits a ConstantClass.
    Parameters:
      `obj` - the constant.

  - ### visitConstantDouble

    void visitConstantDouble(ConstantDouble obj)
    Visits a ConstantDouble.
    Parameters:
      `obj` - the constant.

  - ### visitConstantDynamic

    default void visitConstantDynamic(ConstantDynamic constantDynamic)
    Visits a ConstantDynamic.
    Parameters:
      `constantDynamic` - the constant.
    Since:
      6.3

  - ### visitConstantFieldref

    void visitConstantFieldref(ConstantFieldref obj)
    Visits a ConstantFieldref.
    Parameters:
      `obj` - the constant.

  - ### visitConstantFloat

    void visitConstantFloat(ConstantFloat obj)
    Visits a ConstantFloat.
    Parameters:
      `obj` - the constant.

  - ### visitConstantInteger

    void visitConstantInteger(ConstantInteger obj)
    Visits a ConstantInteger.
    Parameters:
      `obj` - the constant.

  - ### visitConstantInterfaceMethodref

    void visitConstantInterfaceMethodref(ConstantInterfaceMethodref obj)
    Visits a ConstantInterfaceMethodref.
    Parameters:
      `obj` - the constant.

  - ### visitConstantInvokeDynamic

    void visitConstantInvokeDynamic(ConstantInvokeDynamic obj)
    Visits a ConstantInvokeDynamic.
    Parameters:
      `obj` - the constant.

  - ### visitConstantLong

    void visitConstantLong(ConstantLong obj)
    Visits a ConstantLong.
    Parameters:
      `obj` - the constant.

  - ### visitConstantMethodHandle

    void visitConstantMethodHandle(ConstantMethodHandle obj)
    Visits a ConstantMethodHandle.
    Parameters:
      `obj` - the constant.
    Since:
      6.0

  - ### visitConstantMethodref

    void visitConstantMethodref(ConstantMethodref obj)
    Visits a ConstantMethodref.
    Parameters:
      `obj` - the constant.

  - ### visitConstantMethodType

    void visitConstantMethodType(ConstantMethodType obj)
    Visits a ConstantMethodType.
    Parameters:
      `obj` - the constant.
    Since:
      6.0

  - ### visitConstantModule

    void visitConstantModule(ConstantModule constantModule)
    Visits a ConstantModule.
    Parameters:
      `constantModule` - the constant.
    Since:
      6.1

  - ### visitConstantNameAndType

    void visitConstantNameAndType(ConstantNameAndType obj)
    Visits a ConstantNameAndType.
    Parameters:
      `obj` - the constant.

  - ### visitConstantPackage

    void visitConstantPackage(ConstantPackage constantPackage)
    Visits a ConstantPackage.
    Parameters:
      `constantPackage` - the constant.
    Since:
      6.1

  - ### visitConstantPool

    void visitConstantPool(ConstantPool obj)
    Visits a ConstantPool.
    Parameters:
      `obj` - the constant pool.

  - ### visitConstantString

    void visitConstantString(ConstantString obj)
    Visits a ConstantString.
    Parameters:
      `obj` - the constant.

  - ### visitConstantUtf8

    void visitConstantUtf8(ConstantUtf8 obj)
    Visits a ConstantUtf8.
    Parameters:
      `obj` - the constant.

  - ### visitConstantValue

    void visitConstantValue(ConstantValue obj)
    Visits a ConstantValue attribute.
    Parameters:
      `obj` - the attribute.

  - ### visitDeprecated

    void visitDeprecated(Deprecated obj)
    Visits a Deprecated attribute.
    Parameters:
      `obj` - the attribute.

  - ### visitEnclosingMethod

    void visitEnclosingMethod(EnclosingMethod obj)
    Visits an EnclosingMethod attribute.
    Parameters:
      `obj` - the attribute.
    Since:
      6.0

  - ### visitExceptionTable

    void visitExceptionTable(ExceptionTable obj)
    Visits an ExceptionTable attribute.
    Parameters:
      `obj` - the attribute.

  - ### visitField

    void visitField(Field obj)
    Visits a Field.
    Parameters:
      `obj` - the field.

  - ### visitInnerClass

    void visitInnerClass(InnerClass obj)
    Visits an InnerClass.
    Parameters:
      `obj` - the inner class.

  - ### visitInnerClasses

    void visitInnerClasses(InnerClasses obj)
    Visits an InnerClasses attribute.
    Parameters:
      `obj` - the attribute.

  - ### visitJavaClass

    void visitJavaClass(JavaClass obj)
    Visits a JavaClass.
    Parameters:
      `obj` - the class.

  - ### visitLineNumber

    void visitLineNumber(LineNumber obj)
    Visits a LineNumber.
    Parameters:
      `obj` - the line number.

  - ### visitLineNumberTable

    void visitLineNumberTable(LineNumberTable obj)
    Visits a LineNumberTable attribute.
    Parameters:
      `obj` - the attribute.

  - ### visitLocalVariable

    void visitLocalVariable(LocalVariable obj)
    Visits a LocalVariable.
    Parameters:
      `obj` - the local variable.

  - ### visitLocalVariableTable

    void visitLocalVariableTable(LocalVariableTable obj)
    Visits a LocalVariableTable attribute.
    Parameters:
      `obj` - the attribute.

  - ### visitLocalVariableTypeTable

    void visitLocalVariableTypeTable(LocalVariableTypeTable obj)
    Visits a LocalVariableTypeTable attribute.
    Parameters:
      `obj` - the attribute.
    Since:
      6.0

  - ### visitMethod

    void visitMethod(Method obj)
    Visits a Method.
    Parameters:
      `obj` - the method.

  - ### visitMethodParameter

    default void visitMethodParameter(MethodParameter obj)
    Visits a MethodParameter.
    Parameters:
      `obj` - the method parameter.
    Since:
      6.4.0

  - ### visitMethodParameters

    void visitMethodParameters(MethodParameters obj)
    Visits a MethodParameters attribute.
    Parameters:
      `obj` - the attribute.
    Since:
      6.0

  - ### visitModule

    default void visitModule(Module constantModule)
    Visits a Module attribute.
    Parameters:
      `constantModule` - the module.
    Since:
      6.4.0

  - ### visitModuleExports

    default void visitModuleExports(ModuleExports constantModule)
    Visits a ModuleExports entry.
    Parameters:
      `constantModule` - the module exports.
    Since:
      6.4.0

  - ### visitModuleMainClass

    default void visitModuleMainClass(ModuleMainClass obj)
    Visits a ModuleMainClass attribute.
    Parameters:
      `obj` - the attribute.
    Since:
      6.4.0

  - ### visitModuleOpens

    default void visitModuleOpens(ModuleOpens constantModule)
    Visits a ModuleOpens entry.
    Parameters:
      `constantModule` - the module opens.
    Since:
      6.4.0

  - ### visitModulePackages

    default void visitModulePackages(ModulePackages constantModule)
    Visits a ModulePackages attribute.
    Parameters:
      `constantModule` - the module packages.
    Since:
      6.4.0

  - ### visitModuleProvides

    default void visitModuleProvides(ModuleProvides constantModule)
    Visits a ModuleProvides entry.
    Parameters:
      `constantModule` - the module provides.
    Since:
      6.4.0

  - ### visitModuleRequires

    default void visitModuleRequires(ModuleRequires constantModule)
    Visits a ModuleRequires entry.
    Parameters:
      `constantModule` - the module requires.
    Since:
      6.4.0

  - ### visitNestHost

    default void visitNestHost(NestHost obj)
    Visits a NestHost attribute.
    Parameters:
      `obj` - the attribute.
    Since:
      6.4.0

  - ### visitNestMembers

    default void visitNestMembers(NestMembers obj)
    Visits a NestMembers attribute.
    Parameters:
      `obj` - the attribute.
    Since:
      6.4.0

  - ### visitParameterAnnotation

    void visitParameterAnnotation(ParameterAnnotations obj)
    Visits a ParameterAnnotations attribute.
    Parameters:
      `obj` - the attribute.
    Since:
      6.0

  - ### visitParameterAnnotationEntry

    void visitParameterAnnotationEntry(ParameterAnnotationEntry obj)
    Visits a ParameterAnnotationEntry.
    Parameters:
      `obj` - the annotation entry.
    Since:
      6.0

  - ### visitRecord

    default void visitRecord(Record obj)
    Visits a `Record` object.
    Parameters:
      `obj` - Record to visit.
    Since:
      6.9.0

  - ### visitRecordComponent

    default void visitRecordComponent(RecordComponentInfo record)
    Visits a `RecordComponentInfo` object.
    Parameters:
      `record` - component to visit.
    Since:
      6.9.0

  - ### visitSignature

    void visitSignature(Signature obj)
    Visits a Signature attribute.
    Parameters:
      `obj` - the attribute.

  - ### visitSourceFile

    void visitSourceFile(SourceFile obj)
    Visits a SourceFile attribute.
    Parameters:
      `obj` - the attribute.

  - ### visitStackMap

    void visitStackMap(StackMap obj)
    Visits a StackMap attribute.
    Parameters:
      `obj` - the attribute.

  - ### visitStackMapEntry

    void visitStackMapEntry(StackMapEntry obj)
    Visits a StackMapEntry.
    Parameters:
      `obj` - the entry.

  - ### visitStackMapType

    default void visitStackMapType(StackMapType obj)
    Visits a `StackMapType` object.
    Parameters:
      `obj` - object to visit.
    Since:
      6.8.0

  - ### visitSynthetic

    void visitSynthetic(Synthetic obj)
    Visits a Synthetic attribute.
    Parameters:
      `obj` - the attribute.

  - ### visitUnknown

    void visitUnknown(Unknown obj)
    Visits an Unknown attribute.
    Parameters:
      `obj` - the attribute.