# Interface: com.pnfsoftware.jeb.core.units.code.android.ir.IDTypeInfoProvider

Type information provider interface.

## Method: findField
- parameter: `typename`, type: `java.lang.String`
- parameter: `fieldname`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.IJLSField`

Description: Retrieve a field declared in the provided type.
parameter: typename: jvm type name
parameter: fieldname: simple field name
return: a field or null if not found

## Method: findField
- parameter: `typename`, type: `java.lang.String`
- parameter: `fieldname`, type: `java.lang.String`
- parameter: `declared`, type: `boolean`
- parameter: `adeclType`, type: `java.lang.String[]`
- return type: `com.pnfsoftware.jeb.core.units.code.android.IJLSField`

Description: Retrieve a field. Type hierarchies can be examined.
parameter: typename: jvm type name
parameter: fieldname: simple field name
parameter: declared: if true, fields *declared* in the provided type will be examined            \(inherited fields will not be examined\); if not, all *public* fields            \(declared and inherited\) will be examined
parameter: adeclType: optional output array receiving the declaring type name
return: a field or null if not found

## Method: findMethod
- parameter: `typename`, type: `java.lang.String`
- parameter: `methodname`, type: `java.lang.String`
- parameter: `descNoReturnType`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.IJLSMethod`

Description: Retrieve a method declared in the provided type.
parameter: typename: jvm type name
parameter: methodname: simple method name
parameter: descNoReturnType: jvm descriptor without return type, that is the paren.\-enclosed list            of parameters, e.g. `(I[J[[Ljava/lang/String;)`
return: a method or null if not found

## Method: findMethod
- parameter: `typename`, type: `java.lang.String`
- parameter: `methodname`, type: `java.lang.String`
- parameter: `descNoReturnType`, type: `java.lang.String`
- parameter: `declared`, type: `boolean`
- parameter: `adeclType`, type: `java.lang.String[]`
- return type: `com.pnfsoftware.jeb.core.units.code.android.IJLSMethod`

Description: Retrieve a method. Constructor methods can be retrieved as well. Type hierarchies can be examined.
parameter: typename: jvm type name
parameter: methodname: simple method name
parameter: descNoReturnType: jvm descriptor without return type, that is the paren.\-enclosed list            of parameters, e.g. `(I[J[[Ljava/lang/String;)`
parameter: declared: if true, methods *declared* in the provided types will be examined            \(inherited methods will not be examined\); if not, all *public* methods            \(declared and inherited\) will be examined; if the method is a constructor method            \(`<init>` or `<clinit>`\), inherited methods are never examined
parameter: adeclType: optional output array receiving the declaring type name
return: a method or null if not found

## Method: findType
- parameter: `typename`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.IJLSType`

Description: Find type information.
parameter: typename: JVM type name
return: the type information, or null if not found

## Method: findTypesWithSuperMethods
- parameter: `typename`, type: `java.lang.String`
- parameter: `methodname`, type: `java.lang.String`
- parameter: `methoddesc`, type: `java.lang.String`
- parameter: `directOnly`, type: `boolean`
- return type: `java.util.List<java.lang.String>`

Description: Find types containing matching super\-method declarations or implementations.
parameter: typename: must be a non\-array object type
parameter: methodname: simple method name
parameter: methoddesc: method descriptor
parameter: directOnly: true to limit the search to direct parents
return: a list of types \(binary form\) containing super implementations or super declarations         for the provided method

## Method: isChildOf
- parameter: `typename`, type: `java.lang.String`
- parameter: `candidateParentTypename`, type: `java.lang.String`
- return type: `boolean`

Description: Determine whether a type descends from a candidate parent type.
parameter: typename: must be a non\-array object type
parameter: candidateParentTypename: must be a non\-array object type
return: true if the provided type descends from the provided candidate super type

## Method: isCompatible
- parameter: `typename`, type: `java.lang.String`
- parameter: `candidateParentTypename`, type: `java.lang.String`
- return type: `boolean`

Description: Determine whether a type can be assigned to a candidate parent type.
parameter: typename: jvm canonical type name of a primitive, object, or array of any
parameter: candidateParentTypename: jvm canonical type name of a primitive, object, or array of            any
return: true if the type is compatible with the candidate parent type

## Method: isFunctionalType
- parameter: `typename`, type: `java.lang.String`
- return type: `java.lang.String`

Description: Determine if the provided is a functional type: a type that implements a functional interface.
parameter: typename: JVM type name
return: the functional interface name, or null if the type is not functional

