Packages

trait Java17LibraryFramework extends Java16LibraryFramework with PermittedSubclasses_attributeBinding

This configuration can be used to read in Java 17 (version 61) class files. All standard information (as defined in the Java Virtual Machine Specification) is represented except of method implementations.

Source
Java17LibraryFramework.scala
Linear Supertypes
PermittedSubclasses_attributeBinding, PermittedSubclasses_attributeReader, Java16LibraryFramework, Record_attributeBinding, Record_attributeReader, Java11LibraryFramework, NestMembers_attributeBinding, NestMembers_attributeReader, NestHost_attributeBinding, NestHost_attributeReader, Java9LibraryFramework, ModulePackages_attributeBinding, ModulePackages_attributeReader, ModuleMainClass_attributeBinding, ModuleMainClass_attributeReader, Java8LibraryFramework, TypeAnnotationAttributesBinding, RuntimeVisibleTypeAnnotations_attributeReader, RuntimeInvisibleTypeAnnotations_attributeReader, TypeAnnotationsBinding, TypeAnnotationPathReader, TypeAnnotationTargetReader, TypeAnnotationsReader, MethodParameters_attributeBinding, MethodParameters_attributeReader, Java7LibraryFramework, Module_attributeBinding, Module_attributeReader, Exceptions_attributeBinding, Exceptions_attributeReader, ConstantValue_attributeBinding, ConstantValue_attributeReader, Synthetic_attributeBinding, Synthetic_attributeReader, Signature_attributeBinding, Signature_attributeReader, Deprecated_attributeBinding, Deprecated_attributeReader, SourceFile_attributeBinding, SourceFile_attributeReader, EnclosingMethod_attributeBinding, EnclosingMethod_attributeReader, InnerClasses_attributeBinding, InnerClasses_attributeReader, AnnotationAttributesBinding, AttributeBinding, AnnotationDefault_attributeReader, RuntimeVisibleParameterAnnotations_attributeReader, RuntimeInvisibleParameterAnnotations_attributeReader, RuntimeVisibleAnnotations_attributeReader, RuntimeInvisibleAnnotations_attributeReader, AttributeReader, ParametersAnnotationsReader, AnnotationsReader, AnnotationsBinding, ElementValuePairsReader, AnnotationsAbstractions, SkipUnknown_attributeReader, AttributesReader, Unknown_attributeAbstractions, AttributesAbstractions, ClassFileBinding, ClassFileReader, bi.reader.ClassFileReaderConfiguration, MethodsBinding, MethodsReader, FieldsBinding, FieldsReader, ConstantPoolBinding, Constant_PoolReader, Constant_PoolAbstractions, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Java17LibraryFramework
  2. PermittedSubclasses_attributeBinding
  3. PermittedSubclasses_attributeReader
  4. Java16LibraryFramework
  5. Record_attributeBinding
  6. Record_attributeReader
  7. Java11LibraryFramework
  8. NestMembers_attributeBinding
  9. NestMembers_attributeReader
  10. NestHost_attributeBinding
  11. NestHost_attributeReader
  12. Java9LibraryFramework
  13. ModulePackages_attributeBinding
  14. ModulePackages_attributeReader
  15. ModuleMainClass_attributeBinding
  16. ModuleMainClass_attributeReader
  17. Java8LibraryFramework
  18. TypeAnnotationAttributesBinding
  19. RuntimeVisibleTypeAnnotations_attributeReader
  20. RuntimeInvisibleTypeAnnotations_attributeReader
  21. TypeAnnotationsBinding
  22. TypeAnnotationPathReader
  23. TypeAnnotationTargetReader
  24. TypeAnnotationsReader
  25. MethodParameters_attributeBinding
  26. MethodParameters_attributeReader
  27. Java7LibraryFramework
  28. Module_attributeBinding
  29. Module_attributeReader
  30. Exceptions_attributeBinding
  31. Exceptions_attributeReader
  32. ConstantValue_attributeBinding
  33. ConstantValue_attributeReader
  34. Synthetic_attributeBinding
  35. Synthetic_attributeReader
  36. Signature_attributeBinding
  37. Signature_attributeReader
  38. Deprecated_attributeBinding
  39. Deprecated_attributeReader
  40. SourceFile_attributeBinding
  41. SourceFile_attributeReader
  42. EnclosingMethod_attributeBinding
  43. EnclosingMethod_attributeReader
  44. InnerClasses_attributeBinding
  45. InnerClasses_attributeReader
  46. AnnotationAttributesBinding
  47. AttributeBinding
  48. AnnotationDefault_attributeReader
  49. RuntimeVisibleParameterAnnotations_attributeReader
  50. RuntimeInvisibleParameterAnnotations_attributeReader
  51. RuntimeVisibleAnnotations_attributeReader
  52. RuntimeInvisibleAnnotations_attributeReader
  53. AttributeReader
  54. ParametersAnnotationsReader
  55. AnnotationsReader
  56. AnnotationsBinding
  57. ElementValuePairsReader
  58. AnnotationsAbstractions
  59. SkipUnknown_attributeReader
  60. AttributesReader
  61. Unknown_attributeAbstractions
  62. AttributesAbstractions
  63. ClassFileBinding
  64. ClassFileReader
  65. ClassFileReaderConfiguration
  66. MethodsBinding
  67. MethodsReader
  68. FieldsBinding
  69. FieldsReader
  70. ConstantPoolBinding
  71. Constant_PoolReader
  72. Constant_PoolAbstractions
  73. AnyRef
  74. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. type Annotation = br.Annotation
  2. type AnnotationDefault_attribute = br.ElementValue
  3. type AnnotationValue = br.AnnotationValue
    Definition Classes
    AnnotationsBinding
  4. type Annotations = ArraySeq[Annotation]
    Definition Classes
    AnnotationsReader
  5. type ArrayValue = br.ArrayValue
    Definition Classes
    AnnotationsBinding
  6. type Attribute = br.Attribute

    Specifying a lower bound is necessary to implement a generic skipAttribute method.

    Specifying a lower bound is necessary to implement a generic skipAttribute method.

    Definition Classes
    AttributeBindingAttributesAbstractions
  7. type Attributes = ArraySeq[Attribute]
    Definition Classes
    AttributesAbstractions
  8. type BooleanValue = br.BooleanValue
    Definition Classes
    AnnotationsBinding
  9. type ByteValue = br.ByteValue
    Definition Classes
    AnnotationsBinding
  10. type CONSTANT_Class_info = cp.CONSTANT_Class_info
  11. type CONSTANT_Double_info = cp.CONSTANT_Double_info
  12. type CONSTANT_Dynamic_info = cp.CONSTANT_Dynamic_info
  13. type CONSTANT_Fieldref_info = cp.CONSTANT_Fieldref_info
  14. type CONSTANT_Float_info = cp.CONSTANT_Float_info
  15. type CONSTANT_Integer_info = cp.CONSTANT_Integer_info
  16. type CONSTANT_InterfaceMethodref_info = cp.CONSTANT_InterfaceMethodref_info
  17. type CONSTANT_InvokeDynamic_info = cp.CONSTANT_InvokeDynamic_info
  18. type CONSTANT_Long_info = cp.CONSTANT_Long_info
  19. type CONSTANT_MethodHandle_info = cp.CONSTANT_MethodHandle_info
  20. type CONSTANT_MethodType_info = cp.CONSTANT_MethodType_info
  21. type CONSTANT_Methodref_info = cp.CONSTANT_Methodref_info
  22. type CONSTANT_Module_info = cp.CONSTANT_Module_info
  23. type CONSTANT_NameAndType_info = cp.CONSTANT_NameAndType_info
  24. type CONSTANT_Package_info = cp.CONSTANT_Package_info
  25. type CONSTANT_String_info = cp.CONSTANT_String_info
  26. type CONSTANT_Utf8_info = cp.CONSTANT_Utf8_info
  27. type CharValue = br.CharValue
    Definition Classes
    AnnotationsBinding
  28. type ClassFile = br.ClassFile

    The type of the object that represents a Java class file.

    The type of the object that represents a Java class file.

    Definition Classes
    ClassFileBindingClassFileReaderConstant_PoolAbstractions
  29. type ClassValue = br.ClassValue
    Definition Classes
    AnnotationsBinding
  30. type ClassesArray = Array[Constant_Pool_Index]
    Definition Classes
    NestMembers_attributeReader
  31. type ConstantValue_attribute = ConstantFieldValue[_]
  32. final type Constant_Pool = Array[Constant_Pool_Entry]
    Definition Classes
    Constant_PoolAbstractions
  33. type Constant_Pool_Entry = cp.Constant_Pool_Entry
  34. final type Constant_Pool_Index = Int
    Definition Classes
    Constant_PoolAbstractions
  35. type DeferredActionsStore = Buffer[(ClassFile) => ClassFile] with Constant_Pool_Entry

    A DeferredActionsStore stores all functions that need to perform post load actions.

    A DeferredActionsStore stores all functions that need to perform post load actions.

    One example is the resolution of references to attributes. (The constant pool is the only structure that is passed around and hence it is the only place where to store information/functions related to a specific class file).

    Definition Classes
    Constant_PoolAbstractions
  36. type Deprecated_attribute = br.Attribute
  37. type DoubleValue = br.DoubleValue
    Definition Classes
    AnnotationsBinding
  38. type ElementValue = br.ElementValue
  39. type ElementValuePair = br.ElementValuePair
  40. type ElementValuePairs = ArraySeq[ElementValuePair]
  41. type ElementValues = ArraySeq[ElementValue]
    Definition Classes
    ElementValuePairsReader
  42. type EnclosingMethod_attribute = EnclosingMethod
  43. type EnumValue = br.EnumValue
    Definition Classes
    AnnotationsBinding
  44. type ExceptionIndexTable = Array[Constant_Pool_Index]
    Definition Classes
    Exceptions_attributeReader
  45. type Exceptions_attribute = ExceptionTable
  46. type Exports = ArraySeq[ExportsEntry]
    Definition Classes
    Module_attributeReader
  47. type ExportsEntry = br.Exports
  48. type ExportsToIndexEntry = String
    Definition Classes
    Module_attributeBinding
  49. type ExportsToIndexTable = Array[Constant_Pool_Index]
    Definition Classes
    Module_attributeReader
  50. type Field_Info = Field
    Definition Classes
    FieldsBindingFieldsReader
  51. type Fields = ArraySeq[Field_Info]
    Definition Classes
    FieldsReader
  52. type FloatValue = br.FloatValue
    Definition Classes
    AnnotationsBinding
  53. type InnerClasses = ArraySeq[InnerClassesEntry]
  54. type InnerClassesEntry = InnerClass
  55. type InnerClasses_attribute = InnerClassTable
  56. type IntValue = br.IntValue
    Definition Classes
    AnnotationsBinding
  57. final type Interfaces = Array[Constant_Pool_Index]

    The inherited interfaces.

    The inherited interfaces.

    Definition Classes
    ClassFileReader
  58. type LocalvarTable = ArraySeq[LocalvarTableEntry]
    Definition Classes
    TypeAnnotationTargetReader
  59. type LocalvarTableEntry = br.LocalvarTableEntry
  60. type LongValue = br.LongValue
    Definition Classes
    AnnotationsBinding
  61. type MethodParameter = br.MethodParameter
  62. type MethodParameters = ArraySeq[MethodParameter]
  63. type MethodParameters_attribute = MethodParameterTable
  64. type Method_Info = Method
    Definition Classes
    MethodsBindingMethodsReader
  65. type Methods = ArraySeq[Method_Info]
    Definition Classes
    MethodsReader
  66. type ModuleMainClass_attribute = ModuleMainClass
  67. type ModulePackages_attribute = ModulePackages
  68. type Module_attribute = Module
  69. type NestHost_attribute = NestHost
  70. type NestMembers_attribute = NestMembers
  71. type Opens = ArraySeq[OpensEntry]
    Definition Classes
    Module_attributeReader
  72. type OpensEntry = br.Opens
  73. type OpensToIndexEntry = String
    Definition Classes
    Module_attributeBinding
  74. type OpensToIndexTable = Array[Constant_Pool_Index]
    Definition Classes
    Module_attributeReader
  75. type PackageIndexTable = Array[Constant_Pool_Index]
  76. type ParameterAnnotations = ArraySeq[Annotation]
    Definition Classes
    ParametersAnnotationsReader
  77. type ParametersAnnotations = ArraySeq[ParameterAnnotations]
    Definition Classes
    ParametersAnnotationsReader
  78. type PermittedSubclassesArray = Array[Constant_Pool_Index]
  79. type PermittedSubclasses_attribute = PermittedSubclasses
  80. type Provides = ArraySeq[ProvidesEntry]
    Definition Classes
    Module_attributeReader
  81. type ProvidesEntry = br.Provides
  82. type ProvidesWithIndexEntry = ObjectType
    Definition Classes
    Module_attributeBinding
  83. type ProvidesWithIndexTable = Array[Constant_Pool_Index]
    Definition Classes
    Module_attributeReader
  84. type RecordComponent = br.RecordComponent
  85. type RecordComponents = ArraySeq[RecordComponent]
    Definition Classes
    Record_attributeReader
  86. type Record_attribute = Record
  87. type Requires = ArraySeq[RequiresEntry]
    Definition Classes
    Module_attributeReader
  88. type RequiresEntry = br.Requires
  89. type RuntimeInvisibleAnnotations_attribute = RuntimeInvisibleAnnotationTable
  90. type RuntimeInvisibleParameterAnnotations_attribute = RuntimeInvisibleParameterAnnotationTable
  91. type RuntimeInvisibleTypeAnnotations_attribute = RuntimeInvisibleTypeAnnotationTable
  92. type RuntimeVisibleAnnotations_attribute = RuntimeVisibleAnnotationTable
  93. type RuntimeVisibleParameterAnnotations_attribute = RuntimeVisibleParameterAnnotationTable
  94. type RuntimeVisibleTypeAnnotations_attribute = RuntimeVisibleTypeAnnotationTable
  95. type ShortValue = br.ShortValue
    Definition Classes
    AnnotationsBinding
  96. type Signature_attribute = Signature
  97. type SourceFile_attribute = SourceFile
  98. type Synthetic_attribute = br.Attribute
  99. type TypeAnnotation = br.TypeAnnotation
  100. type TypeAnnotationPath = br.TypeAnnotationPath
  101. type TypeAnnotationPathElement = br.TypeAnnotationPathElement
  102. type TypeAnnotationPathElementsTable = ArraySeq[TypeAnnotationPathElement]
    Definition Classes
    TypeAnnotationPathReader
  103. type TypeAnnotationTarget = br.TypeAnnotationTarget
  104. type TypeAnnotations = ArraySeq[TypeAnnotation]
    Definition Classes
    TypeAnnotationsReader
  105. type Unknown_attribute = Null
  106. type Uses = Array[Constant_Pool_Index]
    Definition Classes
    Module_attributeReader
  107. type UsesEntry = ObjectType
    Definition Classes
    Module_attributeBinding

Abstract Value Members

  1. abstract def loadsInterfacesOnly: Boolean

    If true method bodies are never loaded.

    If true method bodies are never loaded.

    Definition Classes
    ClassFileReaderConfiguration

Concrete Value Members

  1. def AllClassFiles(files: Iterable[File], exceptionHandler: bi.reader.ClassFileReader.ExceptionHandler = defaultExceptionHandler): Iterable[(ClassFile, URL)]
    Definition Classes
    ClassFileReader
  2. def Annotation(cp: Constant_Pool, type_index: Constant_Pool_Index, element_value_pairs: ElementValuePairs): Annotation
  3. def Annotation(cp: Constant_Pool, in: DataInputStream): Annotation
    Definition Classes
    AnnotationsAbstractions
  4. def AnnotationDefault_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, element_value: ElementValue): AnnotationDefault_attribute
  5. def AnnotationValue(cp: Constant_Pool, annotation: Annotation): ElementValue
  6. def Annotations(cp: Constant_Pool, in: DataInputStream): Annotations

    Reads the annotations of a annotations attributes.

    Reads the annotations of a annotations attributes.

    From the Specification

    annotation {
         u2 type_index;
         u2 num_element_value_pairs;
         {   u2 element_name_index;
             element_value value;
         }   element_value_pairs[num_element_value_pairs]
    }
    

    Definition Classes
    AnnotationsReader
  7. def ArrayValue(cp: Constant_Pool, values: ElementValues): ElementValue
  8. def Attribute(cp: Constant_Pool, ap: AttributeParent, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, in: DataInputStream): Attribute
    Definition Classes
    AttributesReader
  9. def Attributes(cp: Constant_Pool, ap: AttributeParent, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, in: DataInputStream): Attributes
    Definition Classes
    AttributesReader
  10. def BooleanValue(cp: Constant_Pool, const_value_index: Constant_Pool_Index): ElementValue
  11. def ByteValue(cp: Constant_Pool, const_value_index: Constant_Pool_Index): ElementValue
  12. def CONSTANT_Class_info(i: Int): CONSTANT_Class_info
  13. def CONSTANT_Double_info(d: Double): CONSTANT_Double_info
  14. def CONSTANT_Dynamic_info(bootstrap_method_attr_index: Constant_Pool_Index, name_and_type_index: Constant_Pool_Index): CONSTANT_Dynamic_info
  15. def CONSTANT_Fieldref_info(class_index: Constant_Pool_Index, name_and_type_index: Constant_Pool_Index): CONSTANT_Fieldref_info
  16. def CONSTANT_Float_info(f: Float): CONSTANT_Float_info
  17. def CONSTANT_Integer_info(i: Int): CONSTANT_Integer_info
  18. def CONSTANT_InterfaceMethodref_info(class_index: Constant_Pool_Index, name_and_type_index: Constant_Pool_Index): CONSTANT_InterfaceMethodref_info
  19. def CONSTANT_InvokeDynamic_info(bootstrap_method_attr_index: Constant_Pool_Index, name_and_type_index: Constant_Pool_Index): CONSTANT_InvokeDynamic_info
  20. def CONSTANT_Long_info(l: Long): CONSTANT_Long_info
  21. def CONSTANT_MethodHandle_info(reference_kind: Int, reference_index: Int): CONSTANT_MethodHandle_info
  22. def CONSTANT_MethodType_info(descriptor_index: Constant_Pool_Index): CONSTANT_MethodType_info
  23. def CONSTANT_Methodref_info(class_index: Constant_Pool_Index, name_and_type_index: Constant_Pool_Index): CONSTANT_Methodref_info
  24. def CONSTANT_Module_info(name_index: Constant_Pool_Index): CONSTANT_Module_info
  25. def CONSTANT_NameAndType_info(name_index: Constant_Pool_Index, descriptor_index: Constant_Pool_Index): CONSTANT_NameAndType_info
  26. def CONSTANT_Package_info(name_index: Constant_Pool_Index): CONSTANT_Package_info
  27. def CONSTANT_String_info(i: Int): CONSTANT_String_info
  28. def CONSTANT_Utf8_info(r: Array[Byte], s: String): CONSTANT_Utf8_info
  29. def CastExpression(offset: Int, type_argument_index: Int): TAOfCastExpression
  30. def Catch(exception_table_index: Int): TAOfCatch
  31. def CharValue(cp: Constant_Pool, const_value_index: Constant_Pool_Index): ElementValue
  32. def ClassFile(cp: Constant_Pool, minor_version: Int, major_version: Int, access_flags: Int, this_class_index: Constant_Pool_Index, super_class_index: Constant_Pool_Index, interfaces: Interfaces, fields: Fields, methods: Methods, attributes: Attributes): ClassFile

    Factory method to create the ClassFile object that represents the class file as a whole, plus any ClassFiles that have been synthesized in the process of parsing it.

    Factory method to create the ClassFile object that represents the class file as a whole, plus any ClassFiles that have been synthesized in the process of parsing it.

    The result will always contain at least one ClassFile object, namely the one that is created from this method's parameters. Regardless of how many ClassFiles the result contains, the ClassFile created from this method's parameters will always be the result's first element.

    Definition Classes
    ClassFileBindingClassFileReader
  33. def ClassFile(jarFileName: String, jarFileEntryName: String): List[ClassFile]

    Reads in a single class file from a Jar file.

    Reads in a single class file from a Jar file.

    jarFileName

    the name of an existing ZIP/JAR file that contains class files.

    jarFileEntryName

    the name of a class file stored in the specified ZIP/JAR file.

    Definition Classes
    ClassFileReader
    Annotations
    @throws("if the file is empty or the entry cannot be found")
  34. def ClassFile(jarFile: File, jarFileEntryName: String): List[ClassFile]

    Reads in a single class file from a Jar file.

    Reads in a single class file from a Jar file.

    jarFile

    An existing ZIP/JAR file that contains class files.

    jarFileEntryName

    The name of a class file stored in the specified ZIP/JAR file.

    Definition Classes
    ClassFileReader
    Annotations
    @throws("if the file is empty or the entry cannot be found")
  35. def ClassFile(create: () => InputStream): List[ClassFile]

    Reads in a class file.

    Reads in a class file.

    create

    A function that creates a new InputStream and which must not return null. If you already do have an open input stream which should not be closed after reading the class file use ...ClassFileReader.ClassFile(java.io.DataInputStream) : ClassFile instead. The (newly created) InputStream returned by calling create is closed by this method. The created input stream will automatically be wrapped by OPAL to enable efficient reading of the class file.

    Definition Classes
    ClassFileReader
  36. def ClassFile(in: DataInputStream): List[ClassFile]

    Template method that reads a Java class file from the given input stream.

    Template method that reads a Java class file from the given input stream.

    All other methods to read a class file use this method to eventually parse a class file.

    Class File Structure

    Parses a class file according to the specification:

    ClassFile {
       u4 magic;
       u2 minor_version;
       u2 major_version;
       u2 constant_pool_count;
       cp_info constant_pool[constant_pool_count-1];
       u2 access_flags;
       u2 this_class;
       u2 super_class;
       u2 interfaces_count;
       u2 interfaces[interfaces_count];
       u2 fields_count;
       field_info fields[fields_count];
       u2 methods_count;
       method_info methods[methods_count];
       u2 attributes_count;
       attribute_info attributes[attributes_count];
    }
    

    in

    The DataInputStream from which the class file will be read. The stream is not closed by this method. It is highly recommended that the stream is buffered; otherwise the performance will be terrible!

    Definition Classes
    ClassFileReader
  37. def ClassFiles(file: File, exceptionHandler: bi.reader.ClassFileReader.ExceptionHandler = defaultExceptionHandler): List[(ClassFile, URL)]

    Loads class files from the given file location.

    Loads class files from the given file location.

    • If the file denotes a single ".class" file this class file is loaded.
    • If the file object denotes a ".jar|.war|.ear|.zip" file, all class files in the jar file will be loaded.
    • If the file object specifies a directory object, all ".class" files in the directory and in all subdirectories are loaded as well as all class files stored in ".jar" files in one of the directories. This class loads all class files in parallel. However, this does not effect analyses working on the resulting List.
    Definition Classes
    ClassFileReader
  38. def ClassFiles(zipFile: ZipFile, classFileHandler: (ClassFile, URL) => Unit, exceptionHandler: bi.reader.ClassFileReader.ExceptionHandler): Unit

    Reads in parallel all class files stored in the given jar file.

    Reads in parallel all class files stored in the given jar file. For each successfully read class file the function classFileHandler is called.

    zipFile

    A valid zip file that contains .class files and other .jar files; other files are ignored. Inner jar files are also unzipped.

    classFileHandler

    A function that is called for each class file in the given jar file. Given that the jarFile is read in parallel this function has to be thread safe.

    exceptionHandler

    The exception handler that is called when the reading of a class file fails. This function has to be thread safe.

    Definition Classes
    ClassFileReader
  39. def ClassFiles(in: => JarInputStream): List[(ClassFile, String)]

    Reads the class files from the given JarInputStream

    Reads the class files from the given JarInputStream

    Definition Classes
    ClassFileReader
  40. def ClassFiles(jarFile: ZipFile, exceptionHandler: bi.reader.ClassFileReader.ExceptionHandler): List[(ClassFile, URL)]

    Reads in parallel all class files stored in the given jar/zip file.

    Reads in parallel all class files stored in the given jar/zip file.

    jarFile

    Some valid (non-empty) jar File.

    returns

    The loaded class files.

    Definition Classes
    ClassFileReader
  41. def ClassValue(cp: Constant_Pool, const_value_index: Constant_Pool_Index): ElementValue
  42. def ConstantValue_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attributeNameIndex: Constant_Pool_Index, constantValueIndex: Constant_Pool_Index): ConstantValue_attribute
  43. def Constant_Pool(in: DataInputStream): Constant_Pool
    Definition Classes
    Constant_PoolReader
  44. def ConstructorInMethodReferenceExpression(offset: Int, type_argument_index: Int): TAOfConstructorInMethodReferenceExpression
  45. def ConstructorInvocation(offset: Int, type_argument_index: Int): TAOfConstructorInvocation
  46. def Deprecated_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index): br.Attribute
  47. def DoubleValue(cp: Constant_Pool, const_value_index: Constant_Pool_Index): ElementValue
  48. def ElementValue(cp: Constant_Pool, in: DataInputStream): ElementValue

    Parses an element value.

    Parses an element value.

    From the Specification

    element_value {
       u1 tag;
       union {
         u2   const_value_index;
    
         {
           u2 type_name_index;
           u2 const_name_index;
         } enum_const_value;
    
         u2 class_info_index;
    
         annotation annotation_value;
    
         {
           u2    num_values;
           element_value values[num_values];
         } array_value;
       } value;
    }
    

    Definition Classes
    ElementValuePairsReader
  49. def ElementValuePair(cp: Constant_Pool, element_name_index: Constant_Pool_Index, element_value: ElementValue): ElementValuePair
  50. def ElementValuePair(cp: Constant_Pool, in: DataInputStream): ElementValuePair
    Definition Classes
    ElementValuePairsReader
  51. def ElementValuePairs(cp: Constant_Pool, in: DataInputStream): ElementValuePairs
  52. def EnclosingMethod_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, class_index: Constant_Pool_Index, method_index: Constant_Pool_Index): EnclosingMethod_attribute
  53. def EnumValue(cp: Constant_Pool, type_name_index: Constant_Pool_Index, const_name_index: Constant_Pool_Index): ElementValue
  54. def Exceptions_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, exception_index_table: Array[Constant_Pool_Index]): Exceptions_attribute
  55. def ExportsEntry(cp: Constant_Pool, exports_index: Constant_Pool_Index, exports_flags: Int, exports_to_index_table: ExportsToIndexTable): ExportsEntry
  56. def FieldDeclaration: TAOfFieldDeclaration.type
  57. def Field_Info(cp: Constant_Pool, access_flags: Int, name_index: Constant_Pool_Index, descriptor_index: Constant_Pool_Index, attributes: Attributes): Field_Info
    Definition Classes
    FieldsBindingFieldsReader
  58. def Fields(cp: Constant_Pool, in: DataInputStream): Fields
    Definition Classes
    FieldsReader
  59. def FloatValue(cp: Constant_Pool, const_value_index: Constant_Pool_Index): ElementValue
  60. def FormalParameter(formal_parameter_index: Int): TAOfFormalParameter
  61. def InnerClassesEntry(cp: Constant_Pool, inner_class_info_index: Constant_Pool_Index, outer_class_info_index: Constant_Pool_Index, inner_name_index: Constant_Pool_Index, inner_class_access_flags: Int): InnerClassesEntry
  62. def InnerClasses_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, inner_classes: InnerClasses): InnerClasses_attribute
  63. def InstanceOf(offset: Int): TAOfInstanceOf
  64. def IntValue(cp: Constant_Pool, const_value_index: Constant_Pool_Index): ElementValue
  65. def JRTClassFiles: Iterable[(String, List[(ClassFile, URL)])]

    Returns the class files of the current Java Runtime Image grouped by module.

    Returns the class files of the current Java Runtime Image grouped by module.

    Definition Classes
    ClassFileReader
  66. def LocalvarDecl(localVarTable: LocalvarTable): TAOfLocalvarDecl
  67. def LocalvarTable(in: DataInputStream): LocalvarTable
    Definition Classes
    TypeAnnotationTargetReader
  68. def LocalvarTableEntry(start_pc: Int, length: Int, local_variable_table_index: Int): LocalvarTableEntry

    Factory method to create a LocalvarTableEntry.

    Factory method to create a LocalvarTableEntry. To completely resolve such entries; i.e., to resolve the local_variable_table_index it may be necessary to do some post-processing after all attributes belonging to a code block are loaded. This can be done using the method org.opalj.bi.reader.AttributeReader.registerAttributesPostProcessor.

    Definition Classes
    TypeAnnotationsBindingTypeAnnotationTargetReader
  69. def LongValue(cp: Constant_Pool, const_value_index: Constant_Pool_Index): ElementValue
  70. def MethodInMethodReferenceExpression(offset: Int, type_argument_index: Int): TAOfMethodInMethodReferenceExpression
  71. def MethodInvocation(offset: Int, type_argument_index: Int): TAOfMethodInvocation
  72. def MethodParameter(cp: Constant_Pool, name_index: Constant_Pool_Index, access_flags: Int): MethodParameter
  73. def MethodParameters_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, parameters: MethodParameters): MethodParameters_attribute
  74. def MethodReferenceExpressionIdentifier(offset: Int): TAOfMethodReferenceExpressionIdentifier
  75. def MethodReferenceExpressionNew(offset: Int): TAOfMethodReferenceExpressionNew
  76. def Method_Info(cp: Constant_Pool, accessFlags: Int, name_index: Int, descriptor_index: Int, attributes: Attributes): Method_Info
    Definition Classes
    MethodsBindingMethodsReader
  77. def Methods(cp: Constant_Pool, in: DataInputStream): Methods
    Definition Classes
    MethodsReader
  78. def ModuleMainClass_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, main_class_index: Constant_Pool_Index): ModuleMainClass_attribute

    main_class_index

    Reference to a CONSTANT_Class_info.

    Definition Classes
    ModuleMainClass_attributeBindingModuleMainClass_attributeReader
  79. def ModulePackages_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, package_index_table: PackageIndexTable): ModulePackages_attribute
  80. def Module_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, module_name_index: Constant_Pool_Index, module_flags: Int, module_version_index: Constant_Pool_Index, requires: Requires, exports: Exports, opens: Opens, uses: Uses, provides: Provides): Module_attribute

    module_name_index

    Reference to the constant pool entry with the name of the module - which is NOT in internal form. (I.e., "." are used!)

    module_version_index

    0 or index into the constant pool (i.e., optional).

    Definition Classes
    Module_attributeBindingModule_attributeReader
  81. def NestHost_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, host_class_index: Constant_Pool_Index): NestHost_attribute

    host_class_index

    Reference to a CONSTANT_Class_info.

    Definition Classes
    NestHost_attributeBindingNestHost_attributeReader
  82. def NestMembers_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, classes_array: ClassesArray): NestMembers_attribute
  83. def New(offset: Int): TAOfNew
  84. def OpensEntry(cp: Constant_Pool, opens_index: Constant_Pool_Index, opens_flags: Int, opens_to_index_table: OpensToIndexTable): OpensEntry
  85. def ParameterDeclarationOfClassOrInterface(type_parameter_index: Int): TAOfParameterDeclarationOfClassOrInterface
  86. def ParameterDeclarationOfMethodOrConstructor(type_parameter_index: Int): TAOfParameterDeclarationOfMethodOrConstructor
  87. def ParametersAnnotations(cp: Constant_Pool, in: DataInputStream): ParametersAnnotations
    Definition Classes
    ParametersAnnotationsReader
  88. def PermittedSubclasses_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, classes: PermittedSubclassesArray): PermittedSubclasses_attribute
  89. def ProvidesEntry(cp: Constant_Pool, provides_index: Constant_Pool_Index, provides_with_index_table: ProvidesWithIndexTable): ProvidesEntry
  90. def ReceiverType: TAOfReceiverType.type
  91. def RecordComponent(cp: Constant_Pool, name_index: Constant_Pool_Index, descriptor_index: Constant_Pool_Index, attributes: Attributes): RecordComponent
  92. def Record_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, components: RecordComponents): Record_attribute
  93. def RequiresEntry(cp: Constant_Pool, requires_index: Constant_Pool_Index, requires_flags: Int, require_version_index: Constant_Pool_Index): RequiresEntry
  94. def ResourcevarDecl(localVarTable: LocalvarTable): TAOfResourcevarDecl
  95. def ReturnType: TAOfReturnType.type
  96. def RuntimeInvisibleAnnotations_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, annotations: Annotations): RuntimeInvisibleAnnotations_attribute
  97. def RuntimeInvisibleParameterAnnotations_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, parameters_annotations: ParametersAnnotations): RuntimeInvisibleParameterAnnotations_attribute

    Factory method to create a representation of a RuntimeInvisibleParameterAnnotations_attribute.

    Factory method to create a representation of a RuntimeInvisibleParameterAnnotations_attribute.

    Definition Classes
    AnnotationAttributesBindingRuntimeInvisibleParameterAnnotations_attributeReader
  98. def RuntimeVisibleAnnotations_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, annotations: Annotations): RuntimeVisibleAnnotations_attribute
  99. def RuntimeVisibleParameterAnnotations_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, parameters_annotations: ParametersAnnotations): RuntimeVisibleParameterAnnotations_attribute
  100. def RuntimeVisibleTypeAnnotations_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, annotations: TypeAnnotations): RuntimeVisibleTypeAnnotations_attribute
  101. def ShortValue(cp: Constant_Pool, const_value_index: Constant_Pool_Index): ElementValue
  102. def Signature_attribute(cp: Constant_Pool, ap: AttributeParent, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, signature_index: Constant_Pool_Index): Signature_attribute

    Creates a Signature_attribute.

    Creates a Signature_attribute.

    From the Specification

    The constant pool entry at signature_index must be a CONSTANT_Utf8_info structure representing either a class signature, if this signature attribute is an attribute of a ClassFile structure, a method type signature, if this signature is an attribute of a method_info structure, or a field type signature otherwise.

    Definition Classes
    Signature_attributeBindingSignature_attributeReader
  103. def SourceFile_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, sourcefile_index: Constant_Pool_Index): SourceFile_attribute
  104. def StringValue(cp: Constant_Pool, const_value_index: Constant_Pool_Index): ElementValue
  105. def SupertypeTarget(supertype_index: Int): TAOfSupertype
  106. def Synthetic_attribute(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index): br.Attribute
  107. def Throws(throws_type_index: Int): TAOfThrows
  108. def TypeAnnotation(cp: Constant_Pool, target: TypeAnnotationTarget, path: TypeAnnotationPath, type_index: Constant_Pool_Index, element_value_pairs: ElementValuePairs): TypeAnnotation
  109. def TypeAnnotation(cp: Constant_Pool, in: DataInputStream): TypeAnnotation
    Definition Classes
    TypeAnnotationsReader
  110. def TypeAnnotationDeeperInArrayType: TADeeperInArrayType.type

    The type_path_kind was 0 (and the type_argument_index was also 0).

    The type_path_kind was 0 (and the type_argument_index was also 0).

    Definition Classes
    TypeAnnotationsBindingTypeAnnotationPathReader
  111. def TypeAnnotationDeeperInNestedType: TADeeperInNestedType.type

    The type_path_kind was 1 (and the type_argument_index was (as defined by the specification) also 0).

    The type_path_kind was 1 (and the type_argument_index was (as defined by the specification) also 0).

    Definition Classes
    TypeAnnotationsBindingTypeAnnotationPathReader
  112. def TypeAnnotationDirectlyOnType: TADirectlyOnType.type

    The path's length was 0.

    The path's length was 0.

    Definition Classes
    TypeAnnotationsBindingTypeAnnotationPathReader
  113. def TypeAnnotationOnBoundOfWildcardType: TAOnBoundOfWildcardType.type

    The type_path_kind was 2 (and the type_argument_index was (as defined by the specification) also 0).

    The type_path_kind was 2 (and the type_argument_index was (as defined by the specification) also 0).

    Definition Classes
    TypeAnnotationsBindingTypeAnnotationPathReader
  114. def TypeAnnotationOnTypeArgument(type_argument_index: Int): TAOnTypeArgument
  115. def TypeAnnotationPath(path: ArraySeq[TypeAnnotationPathElement]): TAOnNestedType
  116. def TypeAnnotationPath(in: DataInputStream): TypeAnnotationPath
    Definition Classes
    TypeAnnotationPathReader
  117. def TypeAnnotationTarget(in: DataInputStream): TypeAnnotationTarget

    u1 target_type;
    union {
     type_parameter_target;
     supertype_target;
     type_parameter_bound_target;
     empty_target;
     method_formal_parameter_target;
     throws_target;
     localvar_target;
     catch_target;
     offset_target;
     type_argument_target;
     } target_info;
    

    u1 target_type;
    union {
     type_parameter_target;
     supertype_target;
     type_parameter_bound_target;
     empty_target;
     method_formal_parameter_target;
     throws_target;
     localvar_target;
     catch_target;
     offset_target;
     type_argument_target;
     } target_info;
    

    Definition Classes
    TypeAnnotationTargetReader
  118. def TypeAnnotations(cp: Constant_Pool, in: DataInputStream): TypeAnnotations

    Reads a Runtime(In)VisibleTypeAnnotations attribute.

    Reads a Runtime(In)VisibleTypeAnnotations attribute.

    type_annotation {
               u1 target_type;
               union {
                   type_parameter_target;
                   supertype_target;
                   type_parameter_bound_target;
                   empty_target;
                   method_formal_parameter_target;
                   throws_target;
                   localvar_target;
                   catch_target;
                   offset_target;
                   type_argument_target;
               } target_info;
               type_path target_path;
               u2        type_index;
               u2        num_element_value_pairs;
               { u2              element_name_index;
                 element_value   value;
               } element_value_pairs[num_element_value_pairs];
    }
    

    Definition Classes
    TypeAnnotationsReader
  119. def TypeBoundOfParameterDeclarationOfClassOrInterface(type_parameter_index: Int, bound_index: Int): TAOfTypeBoundOfParameterDeclarationOfClassOrInterface
  120. def TypeBoundOfParameterDeclarationOfMethodOrConstructor(type_parameter_index: Int, bound_index: Int): TAOfTypeBoundOfParameterDeclarationOfMethodOrConstructor
  121. def Unknown_attribute(cp: Constant_Pool, ap: AttributeParent, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, attribute_name_index: Constant_Pool_Index, in: DataInputStream): Null
  122. implicit val annotationType: ClassTag[Annotation]
  123. def applyDeferredActions(cp: Constant_Pool, classFile: ClassFile): ClassFile

    This method is called/needs to be called after the class file was completely loaded to perform class file specific transformations.

    This method is called/needs to be called after the class file was completely loaded to perform class file specific transformations.

    Definition Classes
    Constant_PoolReaderConstant_PoolAbstractions
  124. implicit val attributeType: ClassTag[Attribute]
  125. implicit val config: Config

    The Config object that will be used to read the configuration settings for reading in class files.

    The Config object that will be used to read the configuration settings for reading in class files.

    Definition Classes
    ClassFileReaderConfiguration
  126. implicit val constantPoolEntryType: ClassTag[cp.Constant_Pool_Entry]
  127. implicit def cpIndexTocpEntry(index: Constant_Pool_Index)(implicit cp: Constant_Pool): Constant_Pool_Entry
    Definition Classes
    ConstantPoolBinding
  128. def defaultConfig: Config
  129. final val defaultExceptionHandler: bi.reader.ClassFileReader.ExceptionHandler
    Definition Classes
    ClassFileReader
  130. def defaultLogContext: LogContext
  131. val deleteSynthesizedClassFilesAttributes: Boolean

    This property determines whether artificial SynthesizedClassFiles attributes are kept or removed.

    This property determines whether artificial SynthesizedClassFiles attributes are kept or removed.

    Definition Classes
    ClassFileBinding
    Note

    This setting can be set using the configuration key ClassFileBinding.DeleteSynthesizedClassFilesAttributesConfigKey.

  132. implicit val elementValuePairType: ClassTag[ElementValuePair]
  133. implicit val elementValueType: ClassTag[ElementValue]
  134. implicit val exportsEntryType: ClassTag[ExportsEntry]
  135. val extractSynthesizedClassFiles: (List[ClassFile]) => List[ClassFile]

    Tests if the class file has a SynthesizedClassFiles attribute and – if so – extracts the class file and removes the attribute.

    Tests if the class file has a SynthesizedClassFiles attribute and – if so – extracts the class file and removes the attribute.

    Definition Classes
    ClassFileBinding
  136. implicit val fieldInfoType: ClassTag[Field_Info]
    Definition Classes
    FieldsBindingFieldsReader
  137. def findClassFile(files: Iterable[File], progressReporter: (File) => Unit, classFileFilter: (ClassFile) => Boolean, className: (ClassFile) => String, exceptionHandler: bi.reader.ClassFileReader.ExceptionHandler = defaultExceptionHandler): Either[(ClassFile, URL), Set[String]]

    Searches for the first class file that is accepted by the filter.

    Searches for the first class file that is accepted by the filter. If no class file can be found that is accepted by the filter the set of all class names is returned.

    files

    Some file. If the file names a .jar file the .jar file is opened and searched for a corresponding class file. If the file identifies a "directory" then, all files in that directory are processed.

    Definition Classes
    ClassFileReader
  138. implicit val innerClassesEntryType: ClassTag[InnerClassesEntry]
  139. def isClassFileRepository(filename: String, containerName: Option[String]): Boolean
    Definition Classes
    ClassFileReader
  140. implicit val localvarTableEntryType: ClassTag[LocalvarTableEntry]
  141. implicit val logContext: LogContext

    The org.opalj.log.LogContext that should be used to log rewritings.

    The org.opalj.log.LogContext that should be used to log rewritings.

    Definition Classes
    ClassFileReaderConfiguration
    Note

    The org.opalj.log.LogContext is typically either the org.opalj.log.GlobalLogContext or a project specific log context.

  142. implicit val methodInfoType: ClassTag[Method_Info]
    Definition Classes
    MethodsBindingMethodsReader
  143. implicit val methodParameterType: ClassTag[MethodParameter]
  144. implicit val opensEntryType: ClassTag[OpensEntry]
  145. def processClassFiles(files: Iterable[File], progressReporter: (File) => Unit, classFileProcessor: ((ClassFile, URL)) => Unit, exceptionHandler: bi.reader.ClassFileReader.ExceptionHandler = defaultExceptionHandler): Unit

    Goes over all files in parallel and calls back the given function which has to be thread-safe!

    Goes over all files in parallel and calls back the given function which has to be thread-safe!

    Definition Classes
    ClassFileReader
  146. implicit val providesEntryType: ClassTag[ProvidesEntry]
  147. implicit val recordComponentType: ClassTag[RecordComponent]
  148. def registerAttributeReader(reader: (String, (Constant_Pool, AttributeParent, Constant_Pool_Index, Constant_Pool_Index, Constant_Pool_Index, DataInputStream) => Attribute)): Unit

    See AttributeReader.registerAttributeReader for details.

    See AttributeReader.registerAttributeReader for details.

    Definition Classes
    AttributesReader
  149. def registerAttributesPostProcessor(p: (Attributes) => Attributes): Unit

    Registers a new processor for the list of all attributes of a given class file element (class, field, method, code).

    Registers a new processor for the list of all attributes of a given class file element (class, field, method, code). This can be used to post-process attributes. E.g., to merge multiple line number tables if they exist or to link attributes that have strong dependencies. E.g., (in Java 8) the localvar_target structure of the Runtime(In)VisibleTypeAnnotations attribute has a reference in the local variable table attribute.

    Definition Classes
    AttributesReader
  150. def registerClassFilePostProcessor(p: (List[ClassFile]) => List[ClassFile]): Unit

    Register a class file post processor.

    Register a class file post processor. A class file post processor can transform the completely read and reified class file. Post processors can only be registered before the usage of a class file reader. Registering new ClassFilePostProcessors while processing class files is not supported and the behavior is undefined.

    Definition Classes
    ClassFileReader
    Note

    PostProcessors will be executed in last-in-first-out order.

  151. def registerDeferredAction(cp: Constant_Pool)(deferredAction: (ClassFile) => ClassFile): Unit
    Definition Classes
    Constant_PoolReader
  152. def reifyEmptyAttributes: Boolean

    Controls whether empty attributes (e.g., a LocalVariableTypeTable with no entries) should be reified or should be dropped.

    Controls whether empty attributes (e.g., a LocalVariableTypeTable with no entries) should be reified or should be dropped.

    Definition Classes
    AttributeReader
  153. val removeBootstrapMethodAttribute: (List[ClassFile]) => List[ClassFile]

    Removes all BootstrapMethodTable attributes because the invokedynamic instructions are either completely resolved by creating code that resembles the code executed by the JVM or the instructions are at least enhanced and have explicit references to the bootstrap methods.

    Removes all BootstrapMethodTable attributes because the invokedynamic instructions are either completely resolved by creating code that resembles the code executed by the JVM or the instructions are at least enhanced and have explicit references to the bootstrap methods.

    Definition Classes
    ClassFileBinding
  154. implicit val requiresEntryType: ClassTag[RequiresEntry]
  155. def throwIllegalArgumentException: Boolean

    Returns true if an exception is to be raised if an invalid signature is found.

    Returns true if an exception is to be raised if an invalid signature is found. The default is to just log the invalid signature and to otherwise ignore it.

    This method is intended to be overridden.

    returns

    false.

    Definition Classes
    Signature_attributeReader
    Note

    This method was primarily introduced because we found many class files with invalid signatures AND the JVM also handles this case gracefully!

  156. implicit val typeAnnotationPathElementType: ClassTag[TypeAnnotationPathElement]
  157. implicit val typeAnnotationType: ClassTag[TypeAnnotation]