# 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.

## Abstract 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

## Abstract Method: refinePrototype
- return type: `boolean`

Description: Use a final CFG state to refine the method wildcard prototype. **The current  [IERoutineContext](com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext.md)'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

## Abstract 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

