# Interface: com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEPrototypeHandler

Wildcard prototype \(eprototype\) handler, used to apply, retrieve, and refine eprototypes applied to decompiled routines.

## Method: applyKnownPrototype
- parameter: `createCopies`, type: `boolean`
- return type: `boolean`

Description: Apply a known prototype to the current CFG. Wildcard types will be applied to EVars. New EVar may be created \(eg, stack EVars, dual\-slot EVars\). 

 Required state:
 \- CFG var copy\-replacement must have been done \(SSA okay as well\).
 \- No copy\-split no copy\-merge must have been performed \(only single copy\)
parameter: createCopies: 
return: success indicator

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

Description: Use a final CFG state to refine the method wildcard prototype. **The current [IERoutineContext](IERoutineContext)'s wildcard prototype is updated**. 

 Example: after analysis, a routine prototype may have been determined to be ?\(?,?\) \(= 1 return, 2 params\). The actual types have yet to be determined. The CFG instructions \(after typing\) may carry such information. It is especially important for return types.
return: true if the wildcard prototype in the IR context was updated

## Method: retrieveFromPrototype
- parameter: `params`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric>`
- parameter: `rettypes`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType>`
- return type: `boolean`

Description: Collect parameter EVars and return type\(s\). A prototype must exist.
parameter: params: output array to collect parameters info
parameter: rettypes: output array to collect the return types
return: success indicator

