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

Master interface for all native code items \(objects, types, etc.\).

## Method: addFlags
- parameter: `additions`, type: `int`

Description: Add bits to the existing [flags](#getGenericFlags()).
parameter: additions: flags to add

## Method: dispose
- parameter: `notify`, type: `boolean`

Description: Release resources used by [INativeDataItem](INativeDataItem)
parameter: notify: when true, this method issues a [NativeItemEventType#DISPOSED](NativeItemEventType#DISPOSED) event            after the object was disposed.

## Method: getAttribute
- parameter: `name`, type: `java.lang.String`
- parameter: `clazz`, type: `java.lang.Class<T>`
- return type: `T`

Description: Retrieve an attribute by name.
parameter: name: attribute name
parameter: clazz: expected attribute type
parameter: T: expected attribute type
return: attribute value, or null

## Method: getAttributes
- return type: `java.util.Map<java.lang.String,java.lang.Object>`

Description: Retrieve a map of the item's attributes.
return: attribute map

## Method: hasAttribute
- parameter: `name`, type: `java.lang.String`
- return type: `boolean`

Description: Determine whether this item has an attribute.
parameter: name: attribute name
return: true if the attribute exists

## Method: hasFlag
- parameter: `flag`, type: `int`
- return type: `boolean`

Description: Indicate if [INativeItem](INativeItem) has a particular flag. 
 Equivalent to `(getGenericFlags() & flag) != 0`.
parameter: flag: flag to test
return: true if the flag is set

## Method: hasTrueAttribute
- parameter: `name`, type: `java.lang.String`
- return type: `boolean`

Description: Convenience method to determine whether the item has an attribute and the attribute value is `true`.
parameter: name: attribute name
return: true if the attribute exists and is true

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

Description: Determine whether this item is marked as auto\-generated.
return: true if this item is auto\-generated

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

Description: Indicate if item was disposed.
return: true if item is disposed, false if item is safely usable.

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

Description: Convenience method used to determine whether this item has an effective name different than its original name.
return: true if the item was renamed

## Method: removeAttribute
- parameter: `name`, type: `java.lang.String`
- return type: `boolean`

Description: Remove an attribute.
parameter: name: attribute name
return: true if the attribute was removed

## Method: removeFlags
- parameter: `subtractions`, type: `int`

Description: Remove bits from the existing [flags](#getGenericFlags()).
parameter: subtractions: flags to remove

## Method: setAttribute
- parameter: `name`, type: `java.lang.String`
- parameter: `data`, type: `java.lang.Object`
- return type: `boolean`

Description: Set an attribute.
parameter: name: cannot be null
parameter: data: if null, the attribute is not set or removed if it were present
return: true if the attribute was set or removed

## Method: setAutoGenerated
- parameter: `autoGenerated`, type: `boolean`

Description: Set a flag specifying whether this item was auto\-generated by the native analyzer. This flag can be used by other components and plugins. Typically, auto\-generated items may be modified more liberally than non auto\-generated items, which are likely to be created by users.s
parameter: autoGenerated: true if the item is auto\-generated

## Method: setFlags
- parameter: `newFlags`, type: `int`

Description: Set the [flags](#getGenericFlags()).
parameter: newFlags: new flags

## Method: setName
- parameter: `name`, type: `java.lang.String`

Description: Set the effective name of the native item. All native items can have a name.
parameter: name: the new name; use null to reset the item name to its original name

