# Interface: com.pnfsoftware.jeb.core.units.code.asm.items.INativeMethodItem

A method item references an external or internal native routine. Internal routines have associated [INativeMethodDataItem](INativeMethodDataItem) objects defining them.

## Method: getClassItem
- return type: `com.pnfsoftware.jeb.core.units.code.asm.items.INativeClassItem`

Description: Retrieve the native class item owning this method.
return: class item, or null

## Method: getClassType
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.IClassType`


## Method: getData
- return type: `com.pnfsoftware.jeb.core.units.code.asm.items.INativeMethodDataItem`

Description: If the method is internal, retrieve the method's definition object.
return: the method data object; null if the method is external

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

Description: Retrieve the final rendered method name.
return: final method name

## Method: getFunctionPointer
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.IReferenceType`

Description: Retrieve the function\-pointer type for this method.
return: function\-pointer type

## Method: getInstructions
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.IInstruction>`

Description: Retrieve a list of instructions for this method. It is preferable to use [#getData()](#getData()) and [INativeMethodDataItem#getCFG()](INativeMethodDataItem#getCFG()) instead.

## Method: getMemoryAddress
- return type: `java.lang.Long`

Description: Convenience method to retrieve the physical address of the routine start, if a definition object is present.
return: an address or null if this reference does not link to a definition object

## Method: getNonReturning
- return type: `java.lang.Boolean`

Description: Retrieve a hint specifying whether or not the method returns to its caller. Note that this information may be provided in [prototype](#getPrototype()).
return: null if not present or not computed

## Method: getParameterName
- parameter: `index`, type: `int`
- return type: `java.lang.String`

Description: Retrieve a parameter name.
parameter: index: parameter index
return: parameter name, or null

## Method: getParameterNames
- return type: `java.util.List<java.lang.String>`

Description: Retrieve a list of parameter names.
return: a list, possibly empty \(or containing less entries than the actual parameter count\);         never null

## Method: getParameterTypes
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.asm.type.INativeType>`


## Method: getPrototype
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.IPrototypeItem`

Description: Retrieve the method prototype, if one was set.
return: the prototype or null \(if unknown\)

## Method: getReturnType
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.INativeType`


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

Description: Determine if the native prototype was auto\-generated. The value is irrelevant if [#getPrototype()](#getPrototype()) returns null.
return: true if the prototype was automatically generated

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

Description: Determine whether this method matched a well\-known method signed by one of JEB's code signing system.
return: true if this method was detected as library code

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

Description: Determine whether this method is a placeholder.
return: true if this method is a placeholder

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

Description: Determine whether this method is virtual.
return: true if this method is virtual

## Method: setNonReturning
- parameter: `nonReturning`, type: `java.lang.Boolean`

Description: Specify whether the method returns to its caller upon completion. Note that this information may be provided in [prototype](#getPrototype()).
parameter: nonReturning: non\-returning hint, or null

## Method: setParameterName
- parameter: `index`, type: `int`
- parameter: `name`, type: `java.lang.String`

Description: Set a parameter name.
parameter: index: parameter index
parameter: name: parameter name

## Method: setParameterNames
- parameter: `names`, type: `java.util.Collection<java.lang.String>`

Description: Set parameter names.
parameter: names: parameter names

## Method: setPrototype
- parameter: `prototype`, type: `com.pnfsoftware.jeb.core.units.code.asm.type.IPrototypeItem`

Description: Set or update a prototype. Any wildcard prototype attached to the routine will be nullified.
parameter: prototype: new prototype, or null

