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

`dexdec` IR method context. A method context holds all intermediate \(IR\) information relative to the decompilation of a dex method, including factory methods to create IR instructions and IR expressions.

## Method: clearVirtualVars


## Method: copy
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDMethodContext`

Description: Create a copy of this context. This method is useful when optimizers need to operate and modify in depth a context and its elements \(e.g. the CFG or exception\-flow data\), while the optimizer's success is not guaranteed. On failure, the copied context may be destroyed. On success, the context may be updated using the copied context, by using [#load(IDMethodContext)](#load(IDMethodContext))
return: a new context, which is a deep duplication of this context

## Method: createArrayElt
- parameter: `array`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- parameter: `index`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDArrayElt`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createArrayLength
- parameter: `instance`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstanceField`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createAssign
- parameter: `dst`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- parameter: `src`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction`

Description: Create an `assignment` instruction. Opcode: [DOpcodeType#IR_ASSIGN](DOpcodeType#IR_ASSIGN).
parameter: dst: 
parameter: src: 
return: 

## Method: createBoolean
- parameter: `value`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createByte
- parameter: `value`, type: `byte`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createByteArray
- parameter: `bytes`, type: `byte[]`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDNewArrayInfo`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createCallInfo
- parameter: `methodindex`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDIndex`
- parameter: `arguments`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression[]`
- parameter: `returntype`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `methodsig`, type: `java.lang.String`
- parameter: `invoketype`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.DInvokeType`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDCallInfo`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createCallInfo
- parameter: `methodindex`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDIndex`
- parameter: `arguments`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression>`
- parameter: `returntype`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `methodsig`, type: `java.lang.String`
- parameter: `invoketype`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.DInvokeType`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDCallInfo`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createCallInfo
- parameter: `invoketype`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.DInvokeType`
- parameter: `methodindex`, type: `int`
- parameter: `arguments`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression>`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDCallInfo`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createCast
- parameter: `casttype`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `e`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDOperation`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createChar
- parameter: `value`, type: `char`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createClassObject
- parameter: `csig`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDStaticField`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createConditional
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `pred`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- parameter: `expTrue`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- parameter: `expFalse`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDOperation`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createConstruct
- parameter: `info`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDNewInfo`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction`

Description: Create a `new Object(...)` instruction. Opcode: [DOpcodeType#IR_INVOKE](DOpcodeType#IR_INVOKE).
parameter: info: 
return: 

## Method: createCopyVar
- parameter: `srcVar`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDVar`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDVar`

Description: Create a copy\-variable. If the source variable has a [preferred name](IDVar#getPreferredName()), it is copied to the newly\-created variable.
parameter: srcVar: a primary variable, whose id is in \[0, 0xFFFF\] or \[0x10000, 0x1FFFE\]
return: a variable representing a copy of the provided variable

## Method: createDouble
- parameter: `value`, type: `double`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createFloat
- parameter: `value`, type: `float`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createImm
- parameter: `rawvalue`, type: `long`
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm`

Description: This convenience IR factory method wraps around [IDGlobalContext#createImm(long, IJavaType)](IDGlobalContext#createImm(long, IJavaType)).

## Method: createIndex
- parameter: `value`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDIndex`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createInstanceField
- parameter: `instance`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- parameter: `index`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDIndex`
- parameter: `fieldtype`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `fieldname`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstanceField`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createInt
- parameter: `value`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createInvoke
- parameter: `info`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDCallInfo`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction`

Description: Create an `invocation` instruction. Opcode: [DOpcodeType#IR_INVOKE](DOpcodeType#IR_INVOKE).
parameter: info: 
return: 

## Method: createJcond
- parameter: `irTargetOffset`, type: `int`
- parameter: `cond`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction`

Description: Create a `jcond` \(conditional jump\) instruction. Opcode: [DOpcodeType#IR_JCOND](DOpcodeType#IR_JCOND).
parameter: irTargetOffset: 
parameter: cond: 
return: 

## Method: createJump
- parameter: `irTargetOffset`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction`

Description: Create a `goto` \(unconditional jump\) instruction. Opcode: [DOpcodeType#IR_JUMP](DOpcodeType#IR_JUMP).
parameter: irTargetOffset: 
return: 

## Method: createLong
- parameter: `value`, type: `long`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createMonitorEnter
- parameter: `exp`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction`

Description: Create a `monitor-enter` instruction. Opcode: [DOpcodeType#IR_MONITOR_ENTER](DOpcodeType#IR_MONITOR_ENTER).
parameter: exp: 
return: 

## Method: createMonitorExit
- parameter: `exp`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction`

Description: Create a `monitor-exit` instruction. Opcode: [DOpcodeType#IR_MONITOR_EXIT](DOpcodeType#IR_MONITOR_EXIT).
parameter: exp: 
return: 

## Method: createNewArray
- parameter: `info`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDNewArrayInfo`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction`

Description: Create a `new array` instruction. Opcode: [DOpcodeType#IR_INVOKE](DOpcodeType#IR_INVOKE).
parameter: info: 
return: 

## Method: createNewArrayInfo
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `size`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- parameter: `initvals`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression>`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDNewArrayInfo`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createNewInfo
- parameter: `constructorSig`, type: `java.lang.String`
- parameter: `arguments`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression[]`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDNewInfo`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createNewInfo
- parameter: `objecttype`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `constclasstype`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `constructorindex`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDIndex`
- parameter: `arguments`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression[]`
- parameter: `methodsig`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDNewInfo`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createNewInfo
- parameter: `objecttype`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `constclasstype`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `constructorindex`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDIndex`
- parameter: `arguments`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression>`
- parameter: `methodsig`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDNewInfo`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createNop
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction`

Description: Create a `no-operation` instruction. Opcode: [DOpcodeType#IR_NOP](DOpcodeType#IR_NOP).
return: 

## Method: createNull
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createOperation
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `optype`, type: `com.pnfsoftware.jeb.core.units.code.java.JavaOperatorType`
- parameter: `opnd1`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- parameter: `opnd2`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDOperation`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createOperation
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `left`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- parameter: `operator`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaOperator`
- parameter: `right`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDOperation`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createPredicate
- parameter: `optype`, type: `com.pnfsoftware.jeb.core.units.code.java.JavaOperatorType`
- parameter: `opnd1`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- parameter: `opnd2`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDOperation`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createPredicate
- parameter: `left`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- parameter: `operator`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaOperator`
- parameter: `right`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDOperation`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createReferenceType
- parameter: `cindex`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDIndex`
- parameter: `ctype`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDReferenceType`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createReferenceType
- parameter: `csig`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDReferenceType`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createRegisterVar
- parameter: `regnum`, type: `int`
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDVar`

Description: Create a variable mapping to a physical Dalvik register \(or pair of registers\). This method is used during the initial decompilation phase when the bytecode is converted to low\-level IR.
parameter: regnum: dalvik register number \(first register in the case of a pair\)
parameter: type: variable type
return: a variable

## Method: createReturn
- parameter: `exp`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction`

Description: Create a `return` instruction. Opcode: [DOpcodeType#IR_RETURN](DOpcodeType#IR_RETURN).
parameter: exp: 
return: 

## Method: createShort
- parameter: `value`, type: `short`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createStaticField
- parameter: `index`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDIndex`
- parameter: `fieldtype`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `csig`, type: `java.lang.String`
- parameter: `fieldname`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDStaticField`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createStoreException
- parameter: `ident`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDVar`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction`

Description: Create an `exception-store` instruction. Opcode: [DOpcodeType#IR_STORE_EXCEPTION](DOpcodeType#IR_STORE_EXCEPTION).
parameter: ident: 
return: 

## Method: createString
- parameter: `value`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createString
- parameter: `stringIndex`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDIndex`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createSwitch
- parameter: `swexp`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- parameter: `data`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDSwitchData`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction`

Description: Create a `switch` instruction. Opcode: [DOpcodeType#IR_SWITCH](DOpcodeType#IR_SWITCH).
parameter: swexp: 
parameter: data: 
return: 

## Method: createSwitchData
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDSwitchData`

Description: 

## Method: createTarget
- parameter: `offset`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDTarget`

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).

## Method: createThrow
- parameter: `exp`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction`

Description: Create a `throw` instruction. Opcode: [DOpcodeType#IR_THROW](DOpcodeType#IR_THROW).
parameter: exp: 
return: 

## Method: createVar
- parameter: `id`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDVar`

Description: Create or retrieve a variable.
parameter: id: variable id \(not to be confused with Dalvik register number\)
return: a variable

## Method: createVar
- parameter: `id`, type: `int`
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDVar`

Description: Create or retrieve a variable. Caution: if the variable with the provided id already exists, it will be returned by this method without performing type check: the requested type at creation may not be the type of the returned \(already existing\) variable.
parameter: id: variable id \(not to be confused with Dalvik register number\)
parameter: type: mandatory type
return: a variable

## Method: createVar
- parameter: `id`, type: `int`
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `performTypeCheckIfExists`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDVar`

Description: Create or retrieve a variable.
parameter: id: variable id \(not to be confused with Dalvik register number\)
parameter: type: mandatory type
parameter: performTypeCheckIfExists: if false: if the variable with the provided id already            exists, it will be returned by this method without performing type check: the            requested type may not be the type of the returned \(already existing\) variable; if            true: this method will throw an [IllegalArgumentException](IllegalArgumentException) if an already            existing variable does not have the requested type
return: a variable

## Method: createVirtualVar
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDVar`

Description: Create a virtual variable. A virtual variable does not map back to physical registers.
parameter: type: variable type
return: the created variable

## Method: evaluate
- parameter: `arguments`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm[]`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm`


## Method: evaluate
- parameter: `state`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDState`
- parameter: `arguments`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.android.ir.IDImm>`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm`


## Method: getCfg
- return type: `com.pnfsoftware.jeb.core.units.code.android.controlflow.CFG<com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction>`

Description: Get the current IR \(intermediate representation\) CFG of the decompiled method. As the method advances in the decompilation pipeline, the IR gets refined. When it is fully refined, the final IR is converted to a Java AST.
return: 

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

Description: 
return: 

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

Description: 
return: 

## Method: getData
- parameter: `key`, type: `java.lang.String`
- return type: `java.lang.Object`

Description: Retrieve an arbitrary object in this context.
parameter: key: 
return: 

## Method: getDataKeys
- return type: `java.util.Set<java.lang.String>`

Description: Retrieve the set of objects keys for data elements stored using [setData](#setData(String, Object)).
return: a read\-only collection

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

Description: Retrieve the decompilation flags provided by the engine to decompile this method. Refer to `IDecompilerUnit#FLAG_xxx` constants.
return: 

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


## Method: getDex
- return type: `com.pnfsoftware.jeb.core.units.code.android.IDexUnit`

Description: Retrieve the underlying dex unit.
return: 

## Method: getExceptionData
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDTryData`

Description: Retrieve the exception information for the current IR, if the [exception information](#isParseExceptions()) were parsed when the Dalvik method was converted to IR.
return: an exception information object, which may be empty if the method is unprotected or         if [#isParseExceptions()](#isParseExceptions()) was false when this object as built

## Method: getGlobalContext
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDGlobalContext`

Description: Retrieve the global IR context, shared by all IR method contexts. The global context \(also referred to as 'intermediate context'\) is managed by the decompiler.
return: 

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

Description: Retrieve a reference to the dex method being decompiled.
return: 

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

Description: Retrieve the original signature of the method being decompiled.
return: 

## Method: getOperatorFactory
- return type: `com.pnfsoftware.jeb.core.units.code.java.IJavaOperatorFactory`

Description: Retrieve the global high\-level operator factory. The type factory can be used to create all operators, including conditionals, string concatenation, and create cast operators.
return: 

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

Description: Retrieve the list of variables that hold the method parameters. If the method is non\-static, the first entry represents `this`.
return: a list of variables

## Method: getParametersTypeMap
- return type: `java.util.SortedMap<java.lang.Integer,com.pnfsoftware.jeb.core.units.code.java.IJavaType>`

Description: Retrieve the type map for the decompiled method. The map keys are Dalvik input slot indices. The special index \-1 indicates the return value type, if the method returns a value. The first entry is `this`, if the method is non\-static. Although types `long` and `double` use two slots, only the first slot number is returned. Other primitives and reference type objects use a single slot. 

 \- Example: virtual method f\(\) of class A using 10 registers:
 `int f(char, double, String)` =\> map= `(-1:int, 5:ref_A, 6:char, 7:double, 9:String)`
 

 \- Example: static method g\(\) of class B using 20 registers:
 void g\(long, long, Object, boolean\) =\> map= `(14:long, 16:long, 18:Object, 19:boolean)`
return: 

## Method: getParentContext
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDMethodContext`

Description: 
return: 

## Method: getTypeFactory
- return type: `com.pnfsoftware.jeb.core.units.code.java.IJavaTypeFactory`

Description: Retrieve the global high\-level type factory.
return: 

## Method: getTypeInfoProvider
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDTypeInfoProvider`

Description: Retrieve the type information provider. This provider can access additional, user\-provided libraries \(jar, dex\) to retrieve information on types referenced but not defined in the underlying dex unit.
return: 

## Method: getVar
- parameter: `id`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDVar`

Description: Retrieve a [variable](IDVar) by [id](IDVar#getId()). This method may return null.
parameter: id: a variable id \(not to be confused with Dalvik register number\)
return: a variable, or null if no variable with the provided id exists

## Method: getVar
- parameter: `name`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDVar`

Description: Retrieve a [variable](IDVar) by name. This method may return null.
parameter: name: a variable name \(standard name, or custom name\)
return: a variable, or null if no variable with the provided name exists

## Method: getVariableMap
- return type: `java.util.SortedMap<java.lang.Integer,com.pnfsoftware.jeb.core.units.code.android.ir.IDVar>`

Description: Retrieve a read\-only map of all variables created by this context.
return: 

## Method: getVars
- return type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.android.ir.IDVar>`


## Method: getWatchdog
- return type: `com.pnfsoftware.jeb.util.concurrent.Watchdog`

Description: Retrieve the optional decompilation watchdog. The watchdog embeds timing information and can be queried by decompilation components: a component can request a self\-verification, which will result in an exception being thrown \(and decompilation aborted\) if the timeout is exceeded.
return: 

## Method: incrementDeobfuscationScore
- parameter: `delta`, type: `int`

Description: Update the deobfuscation score for this method. Note that the score is automatically updated by the master optimizer for single\-method IR optimizers \(that is, the majority of them\). For optimizers working on a collection of IRs, right now, the score must be adjusted manually the optimizer itself.
parameter: delta: score increment

## Method: isBatchDecompilation
- return type: `boolean`

Description: Convenience method checking for [IDecompilerUnit#FLAG_BATCH_DECOMPILATION](IDecompilerUnit#FLAG_BATCH_DECOMPILATION).
return: 

## Method: isParseDebugInfo
- return type: `boolean`

Description: Determine whether debug information \(in particular, variable names\) will be ported over [variables](IDVar) created during the conversion to Intermediate Representation.
return: 

## Method: isParseExceptions
- return type: `boolean`

Description: Determine whether exception information will be parsed and integrated within the initial Intermediate Representation, when the Dalvik code is converted to IR.
return: 

## Method: isSSA
- return type: `boolean`

Description: Determine whether the CFG was [converted to an SSA form](#makeSSA()).
return: true if the CFG was SSA'ed

## Method: isStaticMethod
- return type: `boolean`

Description: Determine whether the dalvik method in this IR context is static or non\-static.
return: true if this context is for a static method, false otherwise

## Method: load
- parameter: `sourceContext`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDMethodContext`

Description: Load the constituents of a source context into this context. This method is to be used in conjunction with [#copy()](#copy()).
parameter: sourceContext: a source context

## Method: makeSSA

Description: Convert this CFG to SSA \(static single assignment\) form. An SSA form should be generated before attempting to apply types. This method is reserved for internal use.

## Method: popWorkingOptimizer
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDOptimizer`


## Method: propagateTypes

Description: Perform type determination and propagation on the CFG. The CFG should be in SSA form before doing so. This method is reserved for internal use.

## Method: pushWorkingOptimizer
- parameter: `optimizer`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDOptimizer`


## Method: removeVar
- parameter: `varid`, type: `int`
- return type: `boolean`


## Method: replace
- parameter: `replCfg`, type: `com.pnfsoftware.jeb.core.units.code.android.controlflow.CFG<com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction>`
- parameter: `replExdata`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDTryData`

Description: Replace the current IR by a new CFG and exception information. 

 This method should be seldom called; most times, modifying the CFG itself is sufficient. However, in some cases, a full replacement may be necessary.
parameter: replCfg: new CFG
parameter: replExdata: new exception data \(may be null\)

## Method: replaceCFG
- parameter: `cfg2`, type: `com.pnfsoftware.jeb.core.units.code.android.controlflow.CFG<com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction>`
- parameter: `oldToNewOffsets`, type: `java.util.Map<java.lang.Integer,java.lang.Integer>`

Description: Replace the current IR by a new CFG and exception information. **It is recommended to use [#replace(CFG, IDTryData)](#replace(CFG, IDTryData)) instead.** 

 This method should be seldom called; most times, modifying the CFG itself is sufficient. However, in some cases, a full replacement may be necessary.
parameter: cfg2: new CFG
parameter: oldToNewOffsets: mandatory map map specifying a correspondence "old IR offset to new IR            offset" for each instruction of the CFG \(this map is currently used to update            various internal structures as well as IR exception information\)

## Method: resetDeobfuscationScore


## Method: retrievePhysicalRegisterId
- parameter: `varid`, type: `int`
- return type: `int`

Description: Retrieve the underlying register used by a variable. If the variable uses a long type, the first register of the pair is returned. If the variable is virtual, \-1 is returned.
parameter: varid: a variable id
return: a register id in \[0, 0xFFFF\] if the variable is backed or indirectly backed by a         physical register; \-1 if the variable is "virtual", not backed by a register

## Method: retrievePrimaryVariableId
- parameter: `varid`, type: `int`
- return type: `int`

Description: Retrieve the primary variable id from a variable. If the variable directly maps a register or pair of registers, or is virtual, its id is simply returned. If the variable is a copy of another variable, the id of the copied variable is provided.
parameter: varid: a variable id
return: the original \(non\-copied\) variable id, which may be the provided id itself

## Method: retrieveTemporaryVariable
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDVar`


## Method: retrieveTemporaryVariable
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `idx`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDVar`


## Method: setData
- parameter: `key`, type: `java.lang.String`
- parameter: `value`, type: `java.lang.Object`
- return type: `java.lang.Object`

Description: Store an arbitrary object in this context.
parameter: key: non\-null key
parameter: value: null means remove the entry
return: the previous value associated with the key

## Method: verify

Description: Self\-verification. This method performs several consistency checks on the IR. On failure, the method will throw and an attempt will be made to dump the current IR CFG to a file named "failed.dot".
throws: thrown on verification failure

