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

`dexdec` IR global context. This object also provides factory methods to create non\-instruction [elements](IDElement). \(IR instructions can be created using a [method context](IDMethodContext)\).

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

Description: Create object allocation information.
parameter: objectType: allocated object type
return: allocation information

## Method: createAllocObjectInfo
- parameter: `objectType`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDAllocObjectInfo`

Description: Create object allocation information.
parameter: objectType: allocated object type signature
return: allocation information

## 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: Create an array element.
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: Create an array\-length expression.
parameter: instance: array instance expression
return: array\-length expression

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

Description: [Wrapper](#createImm(long, IJavaType)) used to create boolean constants.
parameter: value: boolean value
return: immediate constant

## Method: createBooleanArray
- parameter: `values`, type: `boolean[]`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDNewArrayInfo`

Description: Create boolean\-array information from concrete values.
parameter: values: initial values
return: new\-array information

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

Description: [Wrapper](#createImm(long, IJavaType)) used to create byte constants.
parameter: value: byte value
return: immediate constant

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

Description: Create byte\-array information from concrete values.
parameter: values: initial 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: Create call information for an invocation.
parameter: methodindex: method pool index
parameter: arguments: invocation 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: Create call information for an invocation.
parameter: methodindex: method pool index
parameter: arguments: invocation 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: Create call information for an invocation.
parameter: invoketype: invocation type
parameter: methodindex: method pool index
parameter: arguments: invocation arguments
return: call information

## Method: createCallInfo
- parameter: `invoketype`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.DInvokeType`
- parameter: `msig`, type: `java.lang.String`
- 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: Create call information for an invocation.
parameter: invoketype: invocation type
parameter: msig: method signature
parameter: arguments: invocation arguments
return: call information

## Method: createCastOperation
- parameter: `castType`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- parameter: `exp`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDOperation`

Description: Create a cast operation.
parameter: castType: target cast type
parameter: exp: expression to cast
return: cast operation expression

## Method: createCastOperation
- parameter: `castTypeSignature`, type: `java.lang.String`
- parameter: `exp`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDOperation`

Description: Create a cast operation.
parameter: castTypeSignature: target cast type signature
parameter: exp: 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: [Wrapper](#createImm(long, IJavaType)) used to create char constants.
parameter: value: char value
return: immediate constant

## Method: createCharArray
- parameter: `values`, type: `char[]`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDNewArrayInfo`

Description: Create char\-array information from concrete values.
parameter: values: initial values
return: new\-array information

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

Description: Create a class object pseudo\-field expression.
parameter: csig: class signature
return: class object 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 operation.
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: createConstant
- 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: Create immediate constants. The same as [#createImm(long, IJavaType)](#createImm(long, IJavaType)).
parameter: rawvalue: raw constant value
parameter: type: constant type
return: immediate constant

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

Description: [Wrapper](#createImm(long, IJavaType)) used to create double constants.
parameter: value: double value
return: immediate constant

## Method: createDoubleArray
- parameter: `values`, type: `double[]`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDNewArrayInfo`

Description: Create double\-array information from concrete values.
parameter: values: initial values
return: new\-array information

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

Description: [Wrapper](#createImm(long, IJavaType)) used to create float constants.
parameter: value: float value
return: immediate constant

## Method: createFloatArray
- parameter: `values`, type: `float[]`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDNewArrayInfo`

Description: Create float\-array information from concrete values.
parameter: values: initial values
return: new\-array information

## 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: Create immediate constants.
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: Create an immutable pool index value.
parameter: value: index value
return: the index object

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

Description: Create an instance field expression from a field signature.
parameter: instance: object instance expression
parameter: fsig: field signature
return: instance field expression

## Method: createInstanceField
- parameter: `instance`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`
- parameter: `fsig`, type: `java.lang.String`
- parameter: `createRefIfDoesNotExist`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInstanceField`

Description: Create an instance field expression from a field signature.
parameter: instance: object instance expression
parameter: fsig: field signature
parameter: createRefIfDoesNotExist: true to create a reference if the field is not found
return: instance field expression

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

Description: Create an instance field expression from a dex field.
parameter: instance: object instance expression
parameter: f: dex field
return: instance field expression

## 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: Create an instance field expression.
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: [Wrapper](#createImm(long, IJavaType)) used to create int constants.
parameter: value: int value
return: immediate constant

## Method: createIntArray
- parameter: `values`, type: `int[]`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDNewArrayInfo`

Description: Create int\-array information from concrete values.
parameter: values: initial values
return: new\-array information

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

Description: [Wrapper](#createImm(long, IJavaType)) used to create long constants.
parameter: value: long value
return: immediate constant

## Method: createLongArray
- parameter: `values`, type: `long[]`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDNewArrayInfo`

Description: Create long\-array information from concrete values.
parameter: values: initial values
return: new\-array information

## Method: createMasterOptimizer
- parameter: `methodContext`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDMethodContext`
- parameter: `registerBuiltinOptimizers`, type: `boolean`
- parameter: `initializeWithDexdecSettings`, type: `boolean`
- parameter: `registerExternalOptimizers`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDMasterOptimizer`

Description: Create a master optimizer targeting the provided method.
parameter: methodContext: target method context
parameter: registerBuiltinOptimizers: true to register built\-in optimizers
parameter: initializeWithDexdecSettings: true to initialize the optimizer with Dex decompiler settings
parameter: registerExternalOptimizers: true to register external optimizers
return: master optimizer

## Method: createMasterOptimizer
- parameter: `methodContext`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDMethodContext`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDMasterOptimizer`

Description: Create a pre\-initialized master optimizer targeting the provided method. This convenience method is equivalent to [createMasterOptimizer\(ctx, true, true, true\)](#createMasterOptimizer(IDMethodContext, boolean, boolean, boolean)).
parameter: methodContext: target method context
return: master optimizer

## 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: Create new\-array information.
parameter: type: array type
parameter: size: 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 method to create a `new SomeObject(..)` operand.
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: Create new\-instance information.
parameter: objecttype: allocated object type
parameter: constclasstype: constant class type
parameter: constructorindex: constructor method index
parameter: arguments: constructor arguments
parameter: methodsig: constructor 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: Create new\-instance information.
parameter: objecttype: allocated object type
parameter: constclasstype: constant class type
parameter: constructorindex: constructor method index
parameter: arguments: constructor arguments
parameter: methodsig: constructor signature
return: new\-instance information

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

Description: [Wrapper](#createImm(long, IJavaType)) used to create the null constant.
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: Create an operation element with at most two operands, such an an arithmetic or bitwise expression, string concatenation, or cast operation.
parameter: type: may be left null to let a basic type for the expression be auto\-determined
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: Create an operation element, such an an arithmetic or bitwise expression, conditional, string concatenation, or cast operation.
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: Create a predicate operation \(typed boolean\).
parameter: optype: a logical operator
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: Create a predicate operation \(typed boolean\).
parameter: left: left operand
parameter: operator: a logical operator
parameter: right: right operand
return: predicate operation expression

## Method: createRef
- parameter: `refid`, type: `int`
- parameter: `reftype`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDImm`

Description: Create an object reference.
parameter: refid: object reference id
parameter: reftype: optional object type; if null is provided, the            [generic wildcard object](IJavaTypeFactory#getGenericObjectWildcard()) type            is used
return: an imm representing an object reference

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

Description: Create an object reference. The type of the reference will be the [generic wildcard object](IJavaTypeFactory#getGenericObjectWildcard()) type
parameter: refid: object reference id
return: an imm representing an object reference

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

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

Description: [Wrapper](#createImm(long, IJavaType)) used to create short constants.
parameter: value: short value
return: immediate constant

## Method: createShortArray
- parameter: `values`, type: `short[]`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDNewArrayInfo`

Description: Create short\-array information from concrete values.
parameter: values: initial values
return: new\-array information

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

Description: Create a fresh, uninitialized IR state. The IR state is context\-less \(no [context](IDState#pushContext(String)) is created\). Settings are left on default values, in particular, the maximum iteration count and duration are set to the default values \(see [IDState#DEFAULT_MAX_ITERCOUNT](IDState#DEFAULT_MAX_ITERCOUNT), [IDState#DEFAULT_MAX_DURATION](IDState#DEFAULT_MAX_DURATION)\). The emulator and sandbox are disabled. The client should use the State's setters before proceeding with emulation.
return: a new IR state

## Method: createState
- parameter: `initForEmulation`, type: `boolean`
- parameter: `loadDexdecEmuSettings`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDState`

Description: Create a fresh IR state. The IR state is context\-less \(no [context](IDState#pushContext(String)) is created\).
parameter: initForEmulation: if true, the state settings are changed to allow for IR emulation
parameter: loadDexdecEmuSettings: if true, the global dexdec emulator configuration file            \(`dexdec-emu.cfg` in your plugins folder\) is used to further configure the            State
return: a new IR state

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

Description: Create a static field expression from a field signature.
parameter: fsig: field signature
return: static field expression

## Method: createStaticField
- parameter: `fsig`, type: `java.lang.String`
- parameter: `createRefIfDoesNotExist`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDStaticField`

Description: Create a static field expression from a field signature.
parameter: fsig: field signature
parameter: createRefIfDoesNotExist: true to create a reference if the field is not found
return: static field expression

## Method: createStaticField
- parameter: `f`, type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexField`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDStaticField`

Description: Create a static field expression from a dex field.
parameter: f: dex field
return: static field expression

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

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

Description: [Wrapper](#createImm(long, IJavaType)) used to create string constants.
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: [Wrapper](#createImm(long, IJavaType)) used to create string constants.
parameter: stringIndex: Dex string pool index
return: immediate constant

## Method: createStringArray
- parameter: `values`, type: `java.lang.String[]`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDNewArrayInfo`

Description: Create string\-array information from concrete values.
parameter: values: initial values
return: new\-array information

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

Description: Create a switch data element used in Switch instructions.
return: empty switch data element

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

Description: Create a branch target.
parameter: offset: target offset
return: branch target

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

Description: Retrieve an arbitrary object in this global context. 

 Note: As of JEB 5.39, these objects are persisted in a JDB2 database.
parameter: key: non\-null key
return: the value or null if none is associated with the key

## Method: getData
- parameter: `key`, type: `java.lang.String`
- parameter: `creator`, type: `java.util.function.Function<java.lang.String,java.lang.Object>`
- return type: `java.lang.Object`

Description: Retrieve or create \(and register\) an arbitrary object in this global context. 

 Note: As of JEB 5.39, these objects are persisted in a JDB2 database.
parameter: key: non\-null key
parameter: creator: the optional creator function is called if no value is mapped to the provided key
return: the value \(existing or newly created\)

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

Description: Retrieve the set of objects keys for persisted data elements. 

 Note: As of JEB 5.39, these objects are persisted in a JDB2 database.
return: a read\-only collection

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

Description: Retrieve the managing dex decompiler object.
return: managing Dex decompiler unit

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

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

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

Description: Retrieve the current IR state associated with the current thread. Each thread has its own associated State: the first time this method is called by thread T, a new state object will be created; the subsequent times this method is called by thread T, the previously created state is returned. 

 This method also performs two important tasks:
 \- the first time it is called, the State is initialized with settings to allow for practical emulation \(large emulation count and timeout, emulation and sandboxing enabled, etc.\)
 \- each time this method is called, settings from the global dexdec emulator configuration file \(`dexdec-emu.cfg` in your plugins folder\) is pulled and applied to the State if they have changed
return: the IR state associated with the running thread

## 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: getThreadSharedState
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDState`

Description: Retrieve the current IR state associated with the current thread. Each thread has its own associated State: the first time this method is called by thread T, a new state object will be created; the subsequent times this method is called by thread T, the previously created state is returned.
return: the IR state associated with the running thread

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

Description: Retrieve a non\-persisted object in this global context.
parameter: key: non\-null key
return: the value \(existing or newly created\)

## Method: getTransientData
- parameter: `key`, type: `java.lang.String`
- parameter: `creator`, type: `java.util.function.Function<java.lang.String,java.lang.Object>`
- return type: `java.lang.Object`

Description: Retrieve or create a non\-persisted object in this global context.
parameter: key: non\-null key
parameter: creator: the optional creator function is called if no value is mapped to the provided key
return: the value \(existing or newly created\)

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

Description: Retrieve the set of objects keys for non\-persisted objects stored in this global context.
return: a read\-only collection

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

Description: Reset deobfuscators counters, generally updated by IR optimizers that rely on IR emulation. Counters are used to track emulation successes and failures for methods. Some optimizers may check the counters to avoid attempting to emulate methods for which too many failures were reported. Calling this method resets such counters, allowing emulation to be re\-attempted. 

 This method resets all counters.

## Method: resetDeobfuscatorCounters
- parameter: `entryName`, type: `java.lang.String`

Description: Reset deobfuscators counters, generally updated by IR optimizers that rely on IR emulation. Counters are used to track emulation successes and failures for methods. Some optimizers may check the counters to avoid attempting to emulate methods for which too many failures were reported. Calling this method resets such counters, allowing emulation to be re\-attempted. 

 This method resets a specific counter.
parameter: entryName: counter name; generally, a method fully\-qualified name, e.g.            `Lcom/abc/Foo->bar(I)V`

## 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 global context. 

 Note: As of JEB 5.39, these objects are persisted in a JDB2 database.
parameter: key: non\-null key
parameter: value: a serializable object; null means remove the entry
return: the previous value associated with the key

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

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

