# Class: com.pnfsoftware.jeb.core.util.DecompilerHelper

Helper methods related to [decompiler units](IDecompilerUnit).

## Static Method: createPluginNamesListProperty
- parameter: `pluginNames`, type: `java.util.Collection<java.lang.String>`
- return type: `java.lang.String`

Description: Serialize a collection of plugin names into a comma\-separated property value.
parameter: pluginNames: the plugin names, may be `null`
return: the serialized property value, or an empty string if the collection is `null`

## Static Method: createProgressLogger
- return type: `com.pnfsoftware.jeb.util.base.ProgressCallbackAdapter`

Description: Create a progress callback object that logs progress to the global logger, as such: `"[current]/[total]: [message]"`
return: the callback object

## Static Method: createProgressLogger
- parameter: `logger`, type: `com.pnfsoftware.jeb.util.logging.ILogger`
- parameter: `level`, type: `java.lang.Integer`
- return type: `com.pnfsoftware.jeb.util.base.ProgressCallbackAdapter`

Description: Create a progress callback object that logs progress to a logger, as such: `"[current]/[total]: [message]"`
parameter: logger: optional logger; if null, the global anonymous logger is used
parameter: level: optional level; if null, the informational level is used
return: the callback object

## Static Method: getAvailableDecompilerNames
- parameter: `engctx`, type: `com.pnfsoftware.jeb.core.IEnginesContext`
- return type: `java.util.List<java.lang.String>`

Description: Retrieve the code unit type names for all registered decompilers.
parameter: engctx: the engines context
return: the supported code unit type names

## Static Method: getAvailableDecompilers
- parameter: `engctx`, type: `com.pnfsoftware.jeb.core.IEnginesContext`
- return type: `java.util.List<com.pnfsoftware.jeb.core.units.IUnitIdentifier>`

Description: Retrieve all registered decompiler unit identifiers.
parameter: engctx: the engines context
return: the available decompiler identifiers

## Static Method: getBuildTypesWithDecompilationSupport
- parameter: `codeUnitType`, type: `java.lang.String`
- return type: `java.util.List<java.lang.String>`

Description: Retrieve the JEB build types that provide decompilation support for a code unit type.
parameter: codeUnitType: the code unit type
return: the supporting build type names, or an empty list if unsupported

## Static Method: getDecompiler
- parameter: `unit`, type: `com.pnfsoftware.jeb.core.units.IUnit`
- return type: `com.pnfsoftware.jeb.core.units.code.IDecompilerUnit`

Description: Retrieve or create a decompiler for the current unit.
parameter: unit: the unit for which a related decompiler is requested
return: the decompiler unit or null

## Static Method: getDecompiler
- parameter: `unit`, type: `com.pnfsoftware.jeb.core.units.IUnit`
- parameter: `createIfNotExist`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.IDecompilerUnit`

Description: Retrieve a decompiler for the current unit.
parameter: unit: a code unit
parameter: createIfNotExist: `true` to create a decompiler when none already exists
return: the decompiler unit or null

## Static Method: getRelatedCodeUnit
- parameter: `unit`, type: `com.pnfsoftware.jeb.core.units.IUnit`
- return type: `com.pnfsoftware.jeb.core.units.code.ICodeUnit`

Description: Retrieve the existing code unit for the provided decompiler or source unit.
parameter: unit: a decompiler or source unit
return: the related code unit, or `null` if none can be resolved

## Static Method: getRelatedDecompiler
- parameter: `unit`, type: `com.pnfsoftware.jeb.core.units.IUnit`
- return type: `com.pnfsoftware.jeb.core.units.code.IDecompilerUnit`

Description: Retrieve an existing decompiler for the current code unit or the decompiler that produced the provided source unit. No decompiler is created.
parameter: unit: a [code unit](ICodeUnit) or a [source unit](ISourceUnit)
return: the decompiler unit or null

## Static Method: hasDecompilerFor
- parameter: `unit`, type: `com.pnfsoftware.jeb.core.units.code.ICodeUnit`
- return type: `boolean`

Description: Determine whether or not there is \(or could be\) an associated decompiler for the provided code unit.
parameter: unit: the code unit to examine
return: `true` if a matching decompiler already exists or can be created, `false`         otherwise

## Static Method: isDexDecompilerAvailable
- parameter: `engctx`, type: `com.pnfsoftware.jeb.core.IEnginesContext`
- return type: `boolean`

Description: Determine whether a Dex decompiler is available in the engines context.
parameter: engctx: the engines context
return: `true` if a Dex decompiler is available, `false` otherwise

## Static Method: parsePluginNamesListProperty
- parameter: `propertyValue`, type: `java.lang.String`
- return type: `java.util.Collection<java.lang.String>`

Description: Parse a comma\-separated plugin\-name property value into a unique set of plugin names.
parameter: propertyValue: the property value, may be `null`
return: the parsed plugin names, preserving their declaration order

## Static Method: typeName
- parameter: `codeUnitType`, type: `java.lang.String`
- return type: `java.lang.String`

Description: Build the decompiler unit type associated with a code unit type.
parameter: codeUnitType: the code unit type
return: the decompiler unit type for the provided code unit type

