# Interface: com.pnfsoftware.jeb.core.units.code.android.IDexUnit

Interface for units representing Android Dalvik bytecode containers, aka Dex files. The Dex unit interface is a virtual view of the Dex bytecode contained an Android application \(APK\). 

 Dex units use Java\-style internal addresses to identify items:
 \- package: `Lcom/abc/`
 \- type: `Lcom/abc/Foo;`
 \- method: `Lcom/abc/Foo;->bar(I[JLjava/Lang/String;)V`
 \- field: `Lcom/abc/Foo;->flag1:Z`
 More information here. 

 Note that in the case of multi\-Dex APKs, the Dex unit represents a virtual, unified view of the separate Dex files contained in the APK. If required, the individual information about those Dex files can be retrieved via [IDexFile](IDexFile). 

 Like many units, Dex unit objects emit [J#UnitChange](J#UnitChange) when the unit contents is being changed. IDexUnit set up event objects such that [JebEvent#getData()](JebEvent#getData()) will return a [UnitChangeEventData](UnitChangeEventData) with fields reasonably populated. 

 How use the JEB API to interact with those objects?
 \- Writing JEB client scripts in Python is a great way to ease into the JEB API.
 \- Visit this public GitHub repository for sample code
 \- In the JEB client, use F2 to bring up the script manager, and try out some sample scripts
 

 Below is a sample client script that shows how to retrieve a project, find the main dex unit, enumerate dex methods, check the bytecode and search for specific instructions.
 File: `ListDexMethodsWithXor.py` 

```

#?description=List dex methods making use of xor instructions
#?shortcut=

from com.pnfsoftware.jeb.client.api import IScript
from com.pnfsoftware.jeb.core.units.code.android import IDexUnit

class ListDexMethodsWithXor(IScript):

  def run(self, ctx):
    prj = ctx.getMainProject()
    assert prj, 'Need a project'

    dex = prj.findUnit(IDexUnit)
    assert dex, 'Need a dex unit'

    cnt = 0
    for m in dex.getMethods():
      if m.isInternal():
        ci = m.getData().getCodeItem()
        if ci and self.checkMethod(ci):
          print(m.getSignature(True, False))
          cnt += 1
    print('Found %d methods' % cnt)

  def checkMethod(self, ci):
    for insn in ci.getInstructions():
      if insn.toString().find('xor-') >= 0:
        return True
    return False
 
```

## Static Field: ACC_ABSTRACT
Type: `int`

Constant value: `1024`
Description: Dex access flag for abstract items.

## Static Field: ACC_ANNOTATION
Type: `int`

Constant value: `8192`
Description: Dex access flag for annotation classes.

## Static Field: ACC_BRIDGE
Type: `int`

Constant value: `64`
Description: Dex access flag for bridge methods.

## Static Field: ACC_CONSTRUCTOR
Type: `int`

Constant value: `65536`
Description: Dex access flag for constructor methods.

## Static Field: ACC_DECLARED_SYNCHRONIZED
Type: `int`

Constant value: `131072`
Description: Dex access flag for declared synchronized methods.

## Static Field: ACC_ENUM
Type: `int`

Constant value: `16384`
Description: Dex access flag for enumeration classes and fields.

## Static Field: ACC_FINAL
Type: `int`

Constant value: `16`
Description: Dex access flag for final items.

## Static Field: ACC_INTERFACE
Type: `int`

Constant value: `512`
Description: Dex access flag for interfaces.

## Static Field: ACC_NATIVE
Type: `int`

Constant value: `256`
Description: Dex access flag for native methods.

## Static Field: ACC_PRIVATE
Type: `int`

Constant value: `2`
Description: Dex access flag for private items.

## Static Field: ACC_PROTECTED
Type: `int`

Constant value: `4`
Description: Dex access flag for protected items.

## Static Field: ACC_PUBLIC
Type: `int`

Constant value: `1`
Description: Dex access flag for public items.

## Static Field: ACC_STATIC
Type: `int`

Constant value: `8`
Description: Dex access flag for static items.

## Static Field: ACC_STRICT
Type: `int`

Constant value: `2048`
Description: Dex access flag for strict floating\-point methods.

## Static Field: ACC_SYNCHRONIZED
Type: `int`

Constant value: `32`
Description: Dex access flag for synchronized methods.

## Static Field: ACC_SYNTHETIC
Type: `int`

Constant value: `4096`
Description: Dex access flag for synthetic items.

## Static Field: ACC_TRANSIENT
Type: `int`

Constant value: `128`
Description: Dex access flag for transient fields.

## Static Field: ACC_VARARGS
Type: `int`

Constant value: `128`
Description: Dex access flag for variable argument methods.

## Static Field: ACC_VOLATILE
Type: `int`

Constant value: `64`
Description: Dex access flag for volatile fields.

## Static Field: INLINE_ALLOWED
Type: `int`

Constant value: `2`
Description: Inlining mode: allowed. The method may be inlined by code processors.

## Static Field: INLINE_AUTO
Type: `int`

Constant value: `0`
Description: Inlining mode: auto\-determined. This mode is to be understood as 'limited', that is, inlining is blocked except for trivial cases

## Static Field: INLINE_BLOCKED
Type: `int`

Constant value: `1`
Description: Inlining mode: blocked. The method must not be inlined by code processors.

## Static Field: INLINE_FORCED
Type: `int`

Constant value: `3`
Description: Inlining mode: forced. The method should be inlined by code processors if possible.

## Static Field: ITAG_BYTECODE
Type: `int`

Constant value: `7`
Description: Encoded address tag for bytecode locations.

## Static Field: ITAG_CLASS
Type: `int`

Constant value: `4`
Description: Encoded address tag for classes.

## Static Field: ITAG_CUSTOM
Type: `int`

Constant value: `16`
Description: Do not use directly \- reserved by dex decompilers

## Static Field: ITAG_FIELD
Type: `int`

Constant value: `5`
Description: Encoded address tag for fields.

## Static Field: ITAG_IMMEDIATE
Type: `int`

Constant value: `10`
Description: Encoded address tag for immediates.

## Static Field: ITAG_METHOD
Type: `int`

Constant value: `6`
Description: Encoded address tag for methods.

## Static Field: ITAG_PACKAGE
Type: `int`

Constant value: `2`
Description: Encoded address tag for packages.

## Static Field: ITAG_PARAMETER
Type: `int`

Constant value: `8`
Description: Encoded address tag for parameters.

## Static Field: ITAG_STRING
Type: `int`

Constant value: `1`
Description: Encoded address tag for strings.

## Static Field: ITAG_TYPE
Type: `int`

Constant value: `3`
Description: Encoded address tag for types.

## Static Field: ITAG_VARIABLE
Type: `int`

Constant value: `9`
Description: Encoded address tag for variables.

## Static Field: ITAG_VIRTUAL_VAR
Type: `int`

Constant value: `11`
Description: Encoded address tag for virtual variables.

## Static Field: itagBitsize
Type: `int`

Constant value: `8`
Description: Bits reserved for an encoded Dex item address tag.

## Static Field: itagItemIdShift
Type: `int`

Constant value: `56`
Description: Bit shift of the item id in encoded Dex item addresses.

## Static Field: propnameContextInfoDb
Type: `java.lang.String`

Constant value: `ContextInfoDb`
Description: Unit property name for the context information database path.

## Method: addDex
- parameter: `dexInput`, type: `com.pnfsoftware.jeb.core.input.IInput`

Description: Add \(merge\) an additional Dex file into this Dex unit.
parameter: dexInput: a Dex [input](IInput) \(file input, bytes input, etc.\) or a ZIP input            containing a single `classes.dex` entry
throws: if the input could not be read or merged

## Method: addField
- parameter: `signature`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexField`

Description: Create a new field and add it to the field pool index.
parameter: signature: full, eg `Lcom/foo/Bar;->val:I`
return: the created Dex field

## Method: addField
- parameter: `type`, type: `java.lang.String`
- parameter: `fieldname`, type: `java.lang.String`
- parameter: `fieldtype`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexField`

Description: Create a new field and add it to the field pool index.
parameter: type: full, eg `Lcom/foo/Bar;->val:I`
parameter: fieldname: simple name
parameter: fieldtype: full, eg `Lcom/foo/Bar;->val:I`
return: the created Dex field

## Method: addMethod
- parameter: `signature`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexMethod`

Description: Create a new method reference and add it to the method pool index.
parameter: signature: full signature, including type name, eg:            `La/b/Foo;->bar(ILjava/lang/String;)Z`
return: the created Dex method

## Method: addMethod
- parameter: `type`, type: `java.lang.String`
- parameter: `methodname`, type: `java.lang.String`
- parameter: `protostring`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexMethod`

Description: Create a new method reference and add it to the method pool index.
parameter: type: defining type signature
parameter: methodname: method name
parameter: protostring: method prototype string
return: the created Dex method

## Method: addPackage
- parameter: `signature`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexPackage`

Description: Create a package and add it to the package pool.
parameter: signature: fully\-qualified package name, e.g. `com.foo.bar`
return: the created Dex package

## Method: addPrototype
- parameter: `prototypeString`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexPrototype`

Description: Create a new Dex prototype and add it to the prototype pool index.
parameter: prototypeString: a full prototype string, such as:            `(typeParam1,typeParam2,...)typeReturn`
return: the created Dex prototype

## Method: addString
- parameter: `value`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexString`

Description: Create a new string and add it to the string pool index.
parameter: value: string value
return: the created Dex string

## Method: addType
- parameter: `typeString`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexType`

Description: Create a new type and add it to the type pool index.
parameter: typeString: a fully\-qualified type name, using the standard Java internal signature            notation \(`L...;`\)
return: the created Dex type

## Method: findClassByName
- parameter: `searchedName`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexClass`

Description: Find a class by effective name, unambiguously.
parameter: searchedName: class name, which could be a simple name, e.g. Bar for            `com.foo.Bar` or Inner1 for `com.foo.Bar$Inner1`
return: the class or null if nothing was found or if the searched name was ambiguous

## Method: findClassByName
- parameter: `searchedName`, type: `java.lang.String`
- parameter: `maxCount`, type: `int`
- parameter: `alsoCheckOriginalName`, type: `boolean`
- return type: `java.util.List<com.pnfsoftware.jeb.core.units.code.android.dex.IDexClass>`

Description: Find a class by name.
parameter: searchedName: class name, which could be a simple name, e.g. Bar for            `com.foo.Bar` or Inner1 for `com.foo.Bar$Inner1`
parameter: maxCount: maximum count of results \(\-1 means no max\)
parameter: alsoCheckOriginalName: if true, the original \(pre\-renaming\) class names are checked as            well
return: the list of classes

## Method: findStringIndex
- parameter: `s`, type: `java.lang.String`
- return type: `int`

Description: Retrieve the pool index of a string, by value.
parameter: s: a string
return: an string pool index, \-1 if the string was not found

## Method: getBadTypeCount
- return type: `int`

Description: Get the number of invalid type descriptors.
return: the bad type count

## Method: getCallSite
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexCallSite`

Description: Retrieve a call site by index.
parameter: index: call site pool index
return: the Dex call site

## Method: getCallSites
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.android.dex.IDexCallSite>`

Description: Get the Dex call site pool.
return: the call sites

## Method: getClass
- parameter: `fqname`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexClass`


## Method: getClass
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexClass`

Description: Convenience method to retrieve a class by its Dex class pool index.
parameter: index: class pool index
return: the Dex class

## Method: getClasses
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.android.dex.IDexClass>`

Description: Get the Dex class pool

## Method: getCommentManager
- return type: `com.pnfsoftware.jeb.core.units.code.android.DexCommentManager`


## Method: getConstantsLibrary
- return type: `com.pnfsoftware.jeb.core.units.code.android.DexConstantLibrary`

Description: Retrieve the constant library object. The constants library holds the *constant* fields of this dex unit \(that is, all `static final` fields ,regardless of their visibility attributes\) as well as values attached to pure field references \(external fields\)
return: the constant library

## Method: getContextInfoProvider
- return type: `com.pnfsoftware.jeb.core.units.code.android.IDexContextInfoProvider`

Description: Retrieve the context information provider. This provider can be used to retrieve methods' context access information \(context\-sensitivity, side\-effect\) and fields' effective finality information.
return: the context information provider

## Method: getCountOfDexEntries
- return type: `int`

Description: Retrieve the count of dex entries managed by this unit.
return: the number of dex entries

## Method: getCountOfDexFiles
- return type: `int`

Description: 
deprecated: use [#getCountOfDexEntries()](#getCountOfDexEntries())
return: the number of dex entries

## Method: getCrossReferences
- parameter: `poolType`, type: `com.pnfsoftware.jeb.core.units.code.android.dex.DexPoolType`
- parameter: `index`, type: `int`
- parameter: `cap`, type: `int`
- return type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.android.dex.IDexAddress>`

Description: Retrieve a list of addresses referencing the provided pool item. This method is left for convenience and legacy only. Newer scripts should use [#getReferenceManager()](#getReferenceManager()).
parameter: poolType: pool item type; currently supported for xrefs: STRING, TYPE, FIELD, METHOD
parameter: index: pool item index
parameter: cap: max number of references to return \(leave to 0 to mean return everything possible\)
return: a list of cross\-reference addresses

## Method: getCrossReferences
- parameter: `poolType`, type: `com.pnfsoftware.jeb.core.units.code.android.dex.DexPoolType`
- parameter: `index`, type: `int`
- return type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.android.dex.IDexAddress>`

Description: Retrieve a list of addresses referencing the provided pool item. This method is left for convenience and legacy only. Newer scripts should use [#getReferenceManager()](#getReferenceManager()).
parameter: poolType: pool item type; currently supported for xrefs: STRING, TYPE, FIELD, METHOD
parameter: index: pool item index
return: a list of cross\-reference addresses

## Method: getDecompiler
- return type: `com.pnfsoftware.jeb.core.units.code.android.IDexDecompilerUnit`

Description: Retrieve or create a decompiler for this unit. If `dexdec` \(the Dex Decompiler module\) is not available with your JEB license, null is returned.
return: the decompiler unit, or null if unavailable

## Method: getDexEntries
- return type: `java.util.List<com.pnfsoftware.jeb.core.units.code.android.IDexFile>`

Description: Retrieve the collection of dex entries managed by this dex unit. 

 When the unit is the result of processing a multi\-dex APK, dex files containing multiple dex entries \(container dex, version 41\+\), or if the unit received [additional dex files](#addDex(IInput)), this method will return a list with multiple items.
return: a non\-empty collection of dex entries

## Method: getDexEntry
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.IDexFile`

Description: Retrieve a dex entry by index.
parameter: index: an index
return: the dex entry

## Method: getDexFile
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.IDexFile`

Description: 
deprecated: [#getDexEntry(int)](#getDexEntry(int))
parameter: index: dex entry index
return: the dex entry

## Method: getDexFiles
- return type: `java.util.List<com.pnfsoftware.jeb.core.units.code.android.IDexFile>`

Description: 
deprecated: use [#getDexEntries()](#getDexEntries())
return: a non\-empty collection of dex entries

## Method: getDisassembly
- return type: `java.lang.String`

Description: This convenience method provides the entire disassembly of the bytecode making up the Dex file. This method is a convenience method: the disassembly text document object can always be retrieved via [#getFormatter()](#getFormatter()).

## Method: getDisassemblyDocument
- return type: `com.pnfsoftware.jeb.core.units.code.android.render.IDexDisassemblyDocument`


## Method: getField
- parameter: `fqname`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexField`


## Method: getField
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexField`

Description: Convenience method to retrieve a field by its Dex field pool index.
parameter: index: field pool index
return: the Dex field

## Method: getFields
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.android.dex.IDexField>`

Description: Get the Dex field pool

## Method: getInstructionCount
- return type: `long`

Description: Retrieve the total amount of instructions in this Dex unit. Note that if this unit represents the virtual Dex file resulting from the merge of several classesX.dex files, the number of instructions returned is the sum of instructions of each individual Dex file.
return: the instruction count

## Method: getMethod
- parameter: `fqname`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexMethod`


## Method: getMethod
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexMethod`

Description: Convenience method to retrieve a method by its Dex method pool index.
parameter: index: method pool index
return: the Dex method

## Method: getMethodHandle
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexMethodHandle`

Description: Retrieve a method handle by index.
parameter: index: method handle pool index
return: the Dex method handle

## Method: getMethodHandles
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.android.dex.IDexMethodHandle>`

Description: Get the Dex method handle pool.
return: the method handles

## Method: getMethodMatch
- parameter: `m`, type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexMethod`
- return type: `com.pnfsoftware.jeb.core.units.code.MethodMatch`

Description: Retrieve the method\-match object attached to a dex method. 

 This method is thread\-safe. Match objects can be attached by any component.
parameter: m: the target method
return: the attached match item, or null if none

## Method: getMethods
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.android.dex.IDexMethod>`

Description: Get the Dex method pool

## Method: getObjectById
- parameter: `id`, type: `long`
- return type: `java.lang.Object`

Description: Retrieve an object by encoded id.
parameter: id: encoded object id
return: the object, or null if none was found

## Method: getPackage
- parameter: `signature`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexPackage`

Description: Retrieve a package by signature.
parameter: signature: fully\-qualified package name, e.g. `com.foo.bar`
return: the Dex package, or null if none was found

## Method: getPackages
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.android.dex.IDexPackage>`

Description: Get the Dex package pool.

## Method: getPrototype
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexPrototype`

Description: Convenience method to retrieve a prototype by its Dex prototype pool index.
parameter: index: prototype index
return: the Dex prototype

## Method: getPrototypes
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.android.dex.IDexPrototype>`

Description: Get the list of Dex prototypes defined in the Dex file \(prototype pool\).
return: a list of prototypes

## Method: getReferenceManager
- return type: `com.pnfsoftware.jeb.core.units.code.android.IDexReferenceManager`

Description: Retrieve the cross\-references manager.
return: the reference manager

## Method: getRenamedIdentifiers
- return type: `java.util.Map<com.pnfsoftware.jeb.core.output.code.coordinates.IdentifierCoordinates,java.lang.String>`

Description: Retrieve a map of renamed identifiers. Only renamed identifiers are stored in the returned object.
return: the renamed identifier map

## Method: getStaticFieldInitializer
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexValue`

Description: Retrieve the initializer for the static field of a class.
parameter: index: the field index
return: the static initializer, or null if there's none

## Method: getString
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexString`

Description: Convenience method to retrieve a string by its Dex string pool index.
parameter: index: string pool index
return: the Dex string

## Method: getStringCount
- return type: `int`

Description: Get the number of strings present in the aggregated string pools represented by this Dex unit.
return: the string count

## Method: getStrings
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.android.dex.IDexString>`

Description: Get the Dex string pool, including extra strings added via [addString](#addString(String)).

## Method: getType
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexType`

Description: Retrieve a type by its Dex type pool index.
parameter: index: type pool index
return: the Dex type

## Method: getType
- parameter: `fqname`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexType`

Description: Retrieve a type by its fully\-qualified name.
parameter: fqname: eg, `Lcom/foo/Bar;`
return: the Dex type, or null if none was found

## Method: getTypeHierarchy
- parameter: `typesig`, type: `java.lang.String`
- parameter: `maxNodeCount`, type: `int`
- parameter: `includeSuperTypes`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.output.tree.ICodeNode`

Description: Generate a type hierarchy tree.
parameter: typesig: root type signature
parameter: maxNodeCount: maximum number of nodes to generate
parameter: includeSuperTypes: true to include supertypes
return: the type hierarchy root node

## Method: getTypes
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.android.dex.IDexType>`

Description: Get the Dex prototype pool

## Method: moveTo
- parameter: `src`, type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexItem`
- parameter: `dst`, type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexItem`
- parameter: `skipChecks`, type: `boolean`
- parameter: `neverAnonymous`, type: `boolean`
- parameter: `notify`, type: `boolean`
- return type: `boolean`

Description: Move a class or a package to another package, class, or method.
parameter: src: an [IDexPackage](IDexPackage) or [IDexClass](IDexClass)
parameter: dst: an [IDexPackage](IDexPackage), [IDexClass](IDexClass) or [IDexMethod](IDexMethod)
parameter: skipChecks: skip extra sanity checks \(if applicable\)
parameter: neverAnonymous: legal only when moving a class to another method \(else N/A\); if true,            the moved class will never be made an anonymous class of the destination method;            if false, an anonymous class will be favored, if it is possible to do so
parameter: notify: true to notify listeners of the change
return: success indicator

## Method: moveTo
- parameter: `src`, type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexItem`
- parameter: `dst`, type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexItem`
- parameter: `skipChecks`, type: `boolean`
- parameter: `neverAnonymous`, type: `boolean`
- return type: `boolean`

Description: Move a class or a package to another package, class, or method.
parameter: src: an [IDexPackage](IDexPackage) or [IDexClass](IDexClass)
parameter: dst: an [IDexPackage](IDexPackage), [IDexClass](IDexClass) or [IDexMethod](IDexMethod)
parameter: skipChecks: skip extra sanity checks \(if applicable\)
parameter: neverAnonymous: legal only when moving a class to another method \(else N/A\); if true,            the moved class will never be made an anonymous class of the destination method;            if false, an anonymous class will be favored, if it is possible to do so
return: success indicator

## Method: moveTo
- parameter: `src`, type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexItem`
- parameter: `dst`, type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexItem`
- return type: `boolean`

Description: Move a class or a package to another package, class, or method. Checks are not skipped; when moving a class to a method, the class will be made anonymous.
parameter: src: an [IDexPackage](IDexPackage) or [IDexClass](IDexClass)
parameter: dst: an [IDexPackage](IDexPackage), [IDexClass](IDexClass) or [IDexMethod](IDexMethod)
return: success indicator

## Method: setMethodMatch
- parameter: `m`, type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexMethod`
- parameter: `match`, type: `com.pnfsoftware.jeb.core.units.code.MethodMatch`
- return type: `com.pnfsoftware.jeb.core.units.code.MethodMatch`

Description: Attach a method\-match object to a dex method. 

 This method is thread\-safe. Match objects can be attached by any component.
parameter: m: the target method
parameter: match: a match item
return: the previously attached match item, null if none

