# Class: com.pnfsoftware.jeb.core.units.code.java.AbstractJBlockOptimizer

A specialized skeleton implementation for a [method](IJavaMethod) AST optimizer meant to run on every [block](IJavaBlock) of AST code of the method, recursively. This optimizer may be used to optimize AST methods only, not AST classes. 

 Refer to the javadoc of the parent types for more information.

## Protected Constructor: AbstractJBlockOptimizer

Description: Create a standard optimizer.

## Protected Constructor: AbstractJBlockOptimizer
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.java.JOptimizerType`

Description: Create an optimizer.
parameter: type: 

## Protected Constructor: AbstractJBlockOptimizer
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.java.JOptimizerType`
- parameter: `name`, type: `java.lang.String`

Description: Create an optimizer.
parameter: type: 
parameter: name: 

## Method: optimizeBlock
- parameter: `b`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaBlock`
- parameter: `parent`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaElement`
- return type: `int`

Description: Optimize a block of AST code. Optimizers must implement this method.
parameter: b: block to be optimized
parameter: parent: the parent element of the block to be optimized
return: number of optimizations performed

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

Description: The default implementation calls [#performInternal(IJavaBlock, IJavaElement)](#performInternal(IJavaBlock, IJavaElement)) on the input AST method, if the element to be optimized is a method. 

 It may be overridden, although it is not recommended.

## Protected Method: performInternal
- parameter: `b`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaBlock`
- parameter: `parent`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaElement`
- return type: `int`

Description: The default implementation calls [#optimizeBlock(IJavaBlock, IJavaElement)](#optimizeBlock(IJavaBlock, IJavaElement)) on all blocks of the AST method to be optimized. The method tree is visited in depth, blocks are optimized post\-visit. 

 It may be overridden, although it is not recommended.
parameter: b: the current block to optimize
parameter: parent: the parent of the block to be optimized\(
return: number of optimizations performed

