# Class: com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.AbstractEPatternOptimizer

Pattern\-Matcher\-Replacer optimizers run with the policy [DataChainsUpdatePolicy#UPDATE_IF_OPTIMIZED](DataChainsUpdatePolicy#UPDATE_IF_OPTIMIZED) or [DataChainsUpdatePolicy#UPDATE_IF_REQUIRED](DataChainsUpdatePolicy#UPDATE_IF_REQUIRED).

## Constructor: AbstractEPatternOptimizer

Description: Create a default matcher with a [IF\_OPTIMIZED](DataChainsUpdatePolicy#UPDATE_IF_OPTIMIZED) policy.

## Constructor: AbstractEPatternOptimizer
- parameter: `updateChainsIfOptimized`, type: `boolean`

Description: Create a matcher.
parameter: updateChainsIfOptimized: if true, the DFA update policy is set to            [IF\_OPTIMIZED](DataChainsUpdatePolicy#UPDATE_IF_OPTIMIZED); else, it is set            to [IF\_REQUIRED](DataChainsUpdatePolicy#UPDATE_IF_REQUIRED) and the            requirement comes from a successful match\-and\-replace on a pattern having the            [EPatternCompiler#FLAG_INVALIDATE_DFA](EPatternCompiler#FLAG_INVALIDATE_DFA) flag.

## Protected Method: getPatterns
- return type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.compiler.EPatternCompiler.EPattern>`


## Protected Method: perform
- return type: `int`


## Method: performOnExpression
- parameter: `exp`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `ectx`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`


