# Interface: com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICElementFactory

Factory interface for common AST objects. Concrete factories can be retrieved from the [ICGlobalContext](ICGlobalContext) of the decompiled target. 

 AST type, class, field, method, label, identifier and constant elements can be created with their respective factories.

## Method: createArrayElement
- parameter: `array`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- parameter: `eltIndex`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICArrayElement`


## Method: createAssignment
- parameter: `left`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICLeftExpression`
- parameter: `right`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICAssignment`


## Method: createBlock
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICBlock`


## Method: createBlock
- parameter: `stm`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICStatement`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICBlock`


## Method: createBlock
- parameter: `stms`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICStatement[]`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICBlock`


## Method: createBreak
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICBreak`


## Method: createBreak
- parameter: `label`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICLabel`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICBreak`


## Method: createCall
- parameter: `method`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICMethod`
- parameter: `arguments`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression>`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICCall`


## Method: createCall
- parameter: `callsite`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- parameter: `arguments`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression>`
- parameter: `candidates`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICMethod>`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICCall`


## Method: createCast
- parameter: `casttype`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICType`
- parameter: `expression`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICOperation`


## Method: createContinue
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICContinue`


## Method: createContinue
- parameter: `label`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICLabel`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICContinue`


## Method: createDecl
- parameter: `var`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICIdentifier`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICDecl`


## Method: createDoWhileStm
- parameter: `b`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICBlock`
- parameter: `p`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICPredicate`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICDoWhileStm`


## Method: createForLoop
- parameter: `pre`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICStatement`
- parameter: `p`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICPredicate`
- parameter: `post`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICStatement`
- parameter: `b`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICBlock`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICForStm`


## Method: createGoto
- parameter: `label`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICLabel`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICGoto`


## Method: createIfStm
- parameter: `p`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICPredicate`
- parameter: `b`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICBlock`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICIfStm`


## Method: createIfStm
- parameter: `p`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICPredicate`
- parameter: `stm`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICStatement`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICIfStm`


## Method: createIfStm
- parameter: `p`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICPredicate`
- parameter: `stm`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICStatement`
- parameter: `defaultStm`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICStatement`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICIfStm`


## Method: createInstanceField
- parameter: `field`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICField`
- parameter: `instance`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- parameter: `pointed`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICInstanceField`


## Method: createJumpFar
- parameter: `jumpsite`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICJumpFar`


## Method: createNativeStatement
- parameter: `nativeAddress`, type: `long`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICCustomStatement`


## Method: createOperation
- parameter: `operator`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICOperator`
- parameter: `opnd1`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICOperation`


## Method: createOperation
- parameter: `operator`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICOperator`
- parameter: `opnd1`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- parameter: `opnd2`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICOperation`


## Method: createOperation
- parameter: `operator`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICOperator`
- parameter: `opnd1`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- parameter: `opnd2`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- parameter: `opnd3`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICOperation`


## Method: createOperation
- parameter: `operator`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICOperator`
- parameter: `opnds`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression>`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICOperation`


## Method: createOperation
- parameter: `operatorType`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.COperatorType`
- parameter: `opnd1`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICOperation`


## Method: createOperation
- parameter: `operatorType`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.COperatorType`
- parameter: `opnd1`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- parameter: `opnd2`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICOperation`


## Method: createOperation
- parameter: `operatorType`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.COperatorType`
- parameter: `opnd1`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- parameter: `opnd2`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- parameter: `opnd3`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICOperation`


## Method: createOperation
- parameter: `operatorType`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.COperatorType`
- parameter: `opnds`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression>`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICOperation`


## Method: createPredicate
- parameter: `e`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICPredicate`


## Method: createReturn
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICReturn`


## Method: createReturn
- parameter: `e`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICReturn`


## Method: createSwitchStm
- parameter: `value`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICSwitchStm`


## Method: createThrow
- parameter: `throwable`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICThrow`


## Method: createTuple
- parameter: `elements`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICExpression>`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICTuple`


## Method: createWhileStm
- parameter: `p`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICPredicate`
- parameter: `b`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICBlock`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICWhileStm`


