# Class: com.pnfsoftware.jeb.core.units.code.asm.cfg.AbstractCFGReorganizer

Facility for CFG graph nodes reordering. Trampoline blocks will be created to ensure the original execution flow is maintained.

## Constructor: AbstractCFGReorganizer
- parameter: `cfg`, type: `com.pnfsoftware.jeb.core.units.code.asm.cfg.CFG<InsnType>`


## Protected Method: buildCFG
- parameter: `statements`, type: `java.util.List<InsnType>`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.cfg.CFG<InsnType>`

Description: 
parameter: statements: 
return: 

## Protected Method: canFallthrough
- parameter: `insn`, type: `InsnType`
- return type: `boolean`

Description: Determine if the provided instruction is a flow breaker that falls\-through \(or may, if it's a conditional branch\) into the first instruction of the next block.
parameter: insn: 
return: 

## Protected Method: createNop
- parameter: `insnSize`, type: `int`
- return type: `InsnType`

Description: 
parameter: insnSize: 
return: 

## Protected Method: createTrampoline
- parameter: `tempTarget`, type: `long`
- return type: `InsnType`

Description: Create a trampoline instruction whose size must be 1.
parameter: tempTarget: 
return: 

## Method: getConversionMap
- return type: `java.util.Map<java.lang.Long,java.lang.Long>`

Description: Retrieve a map holding the old offsets to their corresponding new offsets, in the reorganized CFG.
return: 

## Method: getReorganizedCfg
- return type: `com.pnfsoftware.jeb.core.units.code.asm.cfg.CFG<InsnType>`

Description: Retrieve a CFG reorganized by [#reorder(int[])](#reorder(int[])).
return: 

## Protected Method: hasTargets
- parameter: `insn`, type: `InsnType`
- return type: `boolean`

Description: Determine whether the instruction has targets that may be updated.
parameter: insn: 
return: 

## Method: reorder
- parameter: `newOrder`, type: `int[]`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.cfg.CFG<InsnType>`

Description: 
parameter: newOrder: an array of 0\-based indices from 0 to n\-1; providing \[0, 1, ..., n\-1\] does            nothing
return: a reordered CFG; null if the provided order was the original order

## Protected Method: updateTargets
- parameter: `insn`, type: `InsnType`
- parameter: `map`, type: `java.util.Map<java.lang.Long,java.lang.Long>`

Description: 
parameter: insn: 
parameter: map: 

## Protected Method: updateTrampolineTarget
- parameter: `insn`, type: `InsnType`
- parameter: `target`, type: `long`

Description: 
parameter: insn: must be a trampoline instruction
parameter: target: 

