# 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: addExtraComment
- parameter: `str`, type: `java.lang.String`

Description: Add an extra comment for this method.
parameter: str: comment text

## Method: clearVirtualVars

Description: Remove all virtual variables from this context.

## 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()).
parameter: array: array expression
parameter: index: element index expression
parameter: type: element type
return: array element expression

## 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()).
parameter: instance: array instance expression
return: array length field expression

## 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: destination expression
parameter: src: source expression
return: assignment instruction

## 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()).
parameter: value: boolean value
return: immediate constant

## 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()).
parameter: value: byte value
return: immediate constant

## 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()).
parameter: bytes: byte values
return: new\-array information

## 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()).
parameter: methodindex: method index
parameter: arguments: call arguments
parameter: returntype: return type
parameter: methodsig: method signature
parameter: invoketype: invocation type
return: call information

## 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()).
parameter: methodindex: method index
parameter: arguments: call arguments
parameter: returntype: return type
parameter: methodsig: method signature
parameter: invoketype: invocation type
return: call information

## 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()).
parameter: invoketype: invocation type
parameter: methodindex: method index
parameter: arguments: call arguments
return: call information

## 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()).
parameter: casttype: target cast type
parameter: e: expression to cast
return: cast operation expression

## 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()).
parameter: value: char value
return: immediate constant

## 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()).
parameter: csig: class signature
return: class object static field expression

## 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()).
parameter: type: result type
parameter: pred: predicate expression
parameter: expTrue: expression evaluated when the predicate is true
parameter: expFalse: expression evaluated when the predicate is false
return: conditional operation expression

## 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: new\-instance invocation information
return: construction instruction

## 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()).
parameter: value: double value
return: immediate constant

## 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()).
parameter: value: float value
return: immediate constant

## 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)).
parameter: rawvalue: raw constant value
parameter: type: constant type
return: immediate constant

## 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()).
parameter: value: index value
return: index object

## 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()).
parameter: instance: object instance expression
parameter: index: field index
parameter: fieldtype: field type
parameter: fieldname: field name
return: instance field expression

## 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()).
parameter: value: int value
return: immediate constant

## 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: call information
return: invocation instruction

## 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: target IR offset
parameter: cond: jump condition
return: conditional jump instruction

## 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: target IR offset
return: jump instruction

## 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()).
parameter: value: long value
return: immediate constant

## 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: monitor expression
return: monitor\-enter instruction

## 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: monitor expression
return: monitor\-exit instruction

## 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: new\-array information
return: new\-array instruction

## 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()).
parameter: type: array type
parameter: size: array size expression
parameter: initvals: optional initial values
return: new\-array information

## 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()).
parameter: constructorSig: constructor signature
parameter: arguments: constructor arguments
return: new\-instance information

## 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()).
parameter: objecttype: created object type
parameter: constclasstype: constructor class type
parameter: constructorindex: constructor index
parameter: arguments: constructor arguments
parameter: methodsig: constructor method signature
return: new\-instance information

## 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()).
parameter: objecttype: created object type
parameter: constclasstype: constructor class type
parameter: constructorindex: constructor index
parameter: arguments: constructor arguments
parameter: methodsig: constructor method signature
return: new\-instance information

## 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: no\-operation instruction

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

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).
return: null immediate constant

## 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()).
parameter: type: operation type
parameter: optype: operator type
parameter: opnd1: first operand
parameter: opnd2: optional second operand
return: operation expression

## 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()).
parameter: type: operation type
parameter: left: left operand
parameter: operator: operator
parameter: right: right operand
return: operation expression

## 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()).
parameter: optype: operator type
parameter: opnd1: first operand
parameter: opnd2: optional second operand
return: predicate operation expression

## 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()).
parameter: left: left operand
parameter: operator: operator
parameter: right: right operand
return: predicate operation expression

## 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()).
parameter: cindex: class type index
parameter: ctype: class type
return: reference type expression

## 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()).
parameter: csig: class signature
return: reference type expression

## 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: optional returned expression
return: return instruction

## 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()).
parameter: value: short value
return: immediate constant

## 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()).
parameter: index: field index
parameter: fieldtype: field type
parameter: csig: owner class signature
parameter: fieldname: field name
return: static field expression

## 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: exception variable
return: store\-exception instruction

## 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()).
parameter: value: string value
return: immediate constant

## 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()).
parameter: stringIndex: Dex string pool index
return: immediate constant

## 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: switch expression
parameter: data: switch data
return: switch instruction

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

Description: Convenience IR factory method wrapping around [#getGlobalContext()](#getGlobalContext()).
return: empty switch data element

## 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()).
parameter: offset: target offset
return: target expression

## 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: thrown expression
return: throw instruction

## 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`

Description: Evaluate this method with the provided immediate arguments.
parameter: arguments: method arguments
return: evaluation result
throws: on evaluation error

## 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`

Description: Evaluate this method using the provided state and arguments.
parameter: state: evaluation state
parameter: arguments: method arguments
return: evaluation result
throws: on evaluation error

## 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: current IR CFG

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

Description: Retrieve child contexts created from this context.
return: child contexts

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

Description: Retrieve contexts copied from this context.
return: copied contexts

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

Description: Retrieve an arbitrary object in this context.
parameter: key: non\-null key
return: the value associated with the key, or null

## 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: decompilation flags

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

Description: Retrieve the deobfuscation score for this method.
return: current deobfuscation score

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

Description: Retrieve the underlying dex unit.
return: underlying Dex unit

## 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: getExtraComments
- return type: `java.util.Collection<java.lang.String>`

Description: Retrieve extra comments for this method.
return: extra comments

## 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: global IR context

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

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

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

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

## 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: high\-level operator factory

## 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: parameter type map

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

Description: Retrieve the parent context, if this context was created from another method context.
return: parent context, or null

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

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

## 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: type information provider

## 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: read\-only map of variables by id

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

Description: Retrieve all variables created in this context.
return: variables in this context

## 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: optional decompilation watchdog

## 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: true if this context is for batch decompilation

## 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: true if debug information is parsed

## 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: true if exception information is parsed

## 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`

Description: Pop the current optimizer from the working optimizer stack.
return: popped optimizer

## 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`

Description: Push an optimizer on the working optimizer stack.
parameter: optimizer: optimizer being run

## Method: removeExtraComment
- parameter: `str`, type: `java.lang.String`
- return type: `boolean`

Description: Remove an extra comment for this method.
parameter: str: comment text
return: true if a comment was removed

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

Description: Remove a variable from this context.
parameter: varid: variable id
return: true if the variable was removed

## 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

Description: Reset the deobfuscation score for this method.

## 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`

Description: Retrieve or create a temporary variable.
parameter: type: temporary variable type
return: temporary variable

## 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`

Description: Retrieve or create a temporary variable with an explicit index.
parameter: type: temporary variable type
parameter: idx: temporary variable index
return: temporary variable

## 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

