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


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


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

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


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

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


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

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


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


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


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


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


## 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: 
parameter: exp: 
return: 

## 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: 
parameter: exp: 
return: 

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

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


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


## 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: 
parameter: pred: 
parameter: expTrue: 
parameter: expFalse: 
return: 

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

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

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


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

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


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

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


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


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


## 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: 
parameter: instance: 
parameter: index: 
parameter: fieldtype: 
parameter: fieldname: 
return: 

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

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


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

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


## 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: 
parameter: registerBuiltinOptimizers: 
parameter: initializeWithDexdecSettings: 
parameter: registerExternalOptimizers: 
return: 

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


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

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


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


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

## 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: 
parameter: opnd1: 
parameter: opnd2: 
return: 

## 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: 
parameter: left: 
parameter: operator: 
parameter: right: 
return: 

## 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: 
parameter: opnd2: 
return: 

## 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: 
parameter: operator: a logical operator
parameter: right: 
return: 

## 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: 
parameter: ctype: 
return: 

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

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

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


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


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


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


## 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: 
parameter: index: 
parameter: fieldtype: 
parameter: csig: 
parameter: fieldname: 
return: 

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

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

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


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

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

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


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

Description: Retrieve an arbitrary object in this global context. 

 Note: user\-data stored in the global IR context is not persisted \(in a JDB2 database\). To store persisted data, an alternative is to use the similar user\-data methods of the owner [decompiler unit](IDexDecompilerUnit) object.
parameter: 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: user\-data stored in the global IR context is not persisted \(in a JDB2 database\). To store persisted data, an alternative is to use the similar user\-data methods of the owner [decompiler unit](IDexDecompilerUnit) object.
parameter: key: 
parameter: creator: the 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 data elements stored using [setData](#setData(String, Object)). 

 Note: user\-data stored in the global IR context is not persisted \(in a JDB2 database\). To store persisted data, an alternative is to use the similar user\-data methods of the owner [decompiler unit](IDexDecompilerUnit) object.
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: 

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

Description: Retrieve the underlying dex unit object.
return: 

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

## 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: 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: 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: user\-data stored in the global IR context is not persisted \(in a JDB2 database\). To store persisted data, an alternative is to use the similar user\-data methods of the owner [decompiler unit](IDexDecompilerUnit) object.
parameter: key: non\-null key
parameter: value: null means remove the entry
return: the previous value associated with the key

