# Interface: com.pnfsoftware.jeb.core.units.code.java.IJOptimizer

Plugin interface for `dexdec` \(DEX decompiler\) AST optimizer plugins. They are used to optimize a class or method AST. 

 Implementors should not implement this interface directly: instead, extend [AbstractJOptimizer](AbstractJOptimizer), [AbstractJBlockOptimizer](AbstractJBlockOptimizer), or [AbstractJStatementOptimizer](AbstractJStatementOptimizer).

## Method: getName
- return type: `java.lang.String`

Description: Retrieve the plugin name. Should be consistent with the value returned by `getPluginInformation().getName()`.
return: the optimizer name

## Method: getPriority
- return type: `double`

Description: Get the optimizer priority. A higher value means a higher priority. Priorities are used by [optimizer orchestrators](IJMasterOptimizer) to determine in which order optimizers should be executed.
return: the default priority

## Method: getType
- return type: `com.pnfsoftware.jeb.core.units.code.java.JOptimizerType`

Description: Get the optimizer type. Types are used by [optimizer orchestrators](IJMasterOptimizer) to determine whether an optimizer should run.
return: the optimizer type

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

Description: Determine whether the optimizer is enabled or not. This method is used by [optimizer orchestrators](IJMasterOptimizer) to determine whether an optimizer can be scheduled for execution.
return: true if this optimizer is enabled

## Method: perform
- parameter: `elt`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaDecompilableElement`
- return type: `int`

Description: Run the optimizer on the provided target element \(method or class\).
parameter: elt: an AST element, such as an [IJavaMethod](IJavaMethod) or [IJavaClass](IJavaClass)
return: number of optimizations performed

