Package ghidra.trace.database.program

# Class AbstractDBTraceProgramViewListing

java.lang.Object
ghidra.trace.database.program.AbstractDBTraceProgramViewListing

All Implemented Interfaces:
  `Listing`, `TraceProgramViewListing`

Direct Known Subclasses:
  `DBTraceProgramViewListing`

public abstract class AbstractDBTraceProgramViewListing extends Object implements TraceProgramViewListing

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `protected class`
  `AbstractDBTraceProgramViewListing.DBTraceProgramViewUndefinedData`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final TraceCodeOperations`
  `codeOperations`
  `static final String[]`
  `EMPTY_STRING_ARRAY`
  `protected final Map<TraceMemoryRegion,DBTraceProgramViewFragment>`
  `fragmentsByRegion`
  `protected final DBTraceProgramView`
  `program`
  `protected final DBTraceProgramViewRootModule`
  `rootModule`
  `static final String`
  `TREE_NAME`
  `protected final Map<AddressSnap,UndefinedDBTraceData>`
  `undefinedCache`

  ### Fields inherited from interface ghidra.program.model.listing.Listing

  `DEFAULT_TREE_NAME`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractDBTraceProgramViewListing(DBTraceProgramView program, TraceCodeOperations codeOperations)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `AddressSetView`
  `addInstructions(InstructionSet instructionSet, boolean overwrite)`
  Creates a complete set of instructions.
  `void`
  `clearCodeUnits(Address startAddr, Address endAddr, boolean clearContext)`
  Clears any code units in the given range returning everything to "db"s, and removing any references in the affected area.
  `void`
  `clearComments(Address startAddr, Address endAddr)`
  Clears the comments in the given range.
  `void`
  `clearProperties(Address startAddr, Address endAddr, TaskMonitor monitor)`
  Clears the properties in the given range.
  `Data`
  `createData(Address addr, DataType dataType)`
  Creates a new defined Data object at the given address.
  `Data`
  `createData(Address addr, DataType dataType, int length)`
  Creates a new defined Data object of a given length at the given address.
  `Function`
  `createFunction(String name, Address entryPoint, AddressSetView body, SourceType source)`
  Create a function with an entry point and a body of addresses.
  `Function`
  `createFunction(String name, Namespace nameSpace, Address entryPoint, AddressSetView body, SourceType source)`
  Create a function in the specified namespace with an entry point and a body of addresses.
  `Instruction`
  `createInstruction(Address addr, InstructionPrototype prototype, MemBuffer memBuf, ProcessorContextView context, int forcedLengthOverride)`
  Creates a new Instruction object at the given address.
  `ProgramModule`
  `createRootModule(String treeName)`
  Create a new tree that will be identified by the given name.
  `protected UndefinedDBTraceData`
  `doCreateUndefinedUnit(Address address)`
  `protected AddressSet`
  `getAddressSet(Address start, boolean forward)`
  `CodeUnitComments`
  `getAllComments(Address address)`
  Get all the comments at the given address.
  `CodeUnit`
  `getCodeUnitAfter(Address addr)`
  get the next code unit that starts at an address that is greater than the given address.
  `CodeUnit`
  `getCodeUnitAt(Address addr)`
  get the code unit that starts at the given address.
  `CodeUnit`
  `getCodeUnitBefore(Address addr)`
  get the next code unit that starts at an address that is less than the given address.
  `CodeUnit`
  `getCodeUnitContaining(Address addr)`
  get the code unit that contains the given address.
  `protected Iterator<TraceCodeUnit>`
  `getCodeUnitIterator(boolean forward)`
  `protected Iterator<TraceCodeUnit>`
  `getCodeUnitIterator(Address start, boolean forward)`
  `protected Iterator<TraceCodeUnit>`
  `getCodeUnitIterator(AddressSetView set, boolean forward)`
  `CodeUnitIterator`
  `getCodeUnitIterator(String property, boolean forward)`
  Get an iterator that contains all code units in the program which have the specified property type defined.
  `CodeUnitIterator`
  `getCodeUnitIterator(String property, Address addr, boolean forward)`
  Get an iterator that contains the code units which have the specified property type defined.
  `CodeUnitIterator`
  `getCodeUnitIterator(String property, AddressSetView addrSet, boolean forward)`
  Get an iterator that contains the code units which have the specified property type defined.
  `CodeUnitIterator`
  `getCodeUnits(boolean forward)`
  get a CodeUnit iterator that will iterate over the entire address space.
  `CodeUnitIterator`
  `getCodeUnits(Address start, boolean forward)`
  Returns an iterator of the code units in this listing (in proper sequence), starting at the specified address.
  `CodeUnitIterator`
  `getCodeUnits(AddressSetView addressSet, boolean forward)`
  Get an iterator over the address range(s).
  `String`
  `getComment(CommentType commentType, Address address)`
  Get the comment for the given type at the specified address.
  `long`
  `getCommentAddressCount()`
  Returns the number of addresses where at least one comment type has been applied.
  `protected AddressSetView`
  `getCommentAddresses(AddressSetView addrSet)`
  `protected AddressSetView`
  `getCommentAddresses(CommentType commentType, AddressSetView addrSet)`
  `AddressIterator`
  `getCommentAddressIterator(AddressSetView addrSet, boolean forward)`
  Get a forward iterator over addresses that have any type of comment.
  `AddressIterator`
  `getCommentAddressIterator(CommentType commentType, AddressSetView addrSet, boolean forward)`
  Get a forward iterator over addresses that have the specified comment type.
  `CodeUnitIterator`
  `getCommentCodeUnitIterator(CommentType commentType, AddressSetView addrSet)`
  Get a forward code unit iterator over code units that have the specified comment type.
  `CommentHistory[]`
  `getCommentHistory(Address addr, CommentType commentType)`
  Get the comment history for comments at the given address.
  `DataIterator`
  `getData(boolean forward)`
  get a Data iterator that will iterate over the entire address space; returning both defined and undefined Data objects.
  `DataIterator`
  `getData(Address start, boolean forward)`
  Returns an iterator of the data in this listing (in proper sequence), starting at the specified address.
  `DataIterator`
  `getData(AddressSetView addressSet, boolean forward)`
  Get an iterator over the address range(s).
  `Data`
  `getDataAfter(Address addr)`
  get the closest Data object that starts at an address that is greater than the given address.
  `Data`
  `getDataAt(Address addr)`
  get the Data (Defined or Undefined) that starts at the given address.
  `Data`
  `getDataBefore(Address addr)`
  get the closest Data object that starts at an address that is less than the given address.
  `Data`
  `getDataContaining(Address addr)`
  Gets the data object that is at or contains the given address or null if the address in not in memory or is in an instruction.
  `protected Iterator<TraceData>`
  `getDataIterator(boolean forward)`
  `protected Iterator<TraceData>`
  `getDataIterator(Address start, boolean forward)`
  `protected Iterator<TraceData>`
  `getDataIterator(AddressSetView set, boolean forward)`
  `DataTypeManager`
  `getDataTypeManager()`
  Get the data type manager for the program.
  `ProgramModule`
  `getDefaultRootModule()`
  Returns the root module for the default program tree.
  `CodeUnit`
  `getDefinedCodeUnitAfter(Address addr)`
  Returns the next instruction or defined data after the given address;
  `CodeUnit`
  `getDefinedCodeUnitBefore(Address addr)`
  Returns the closest instruction or defined data that starts before the given address.
  `DataIterator`
  `getDefinedData(boolean forward)`
  get a Data iterator that will iterate over the entire address space; returning only defined Data objects.
  `DataIterator`
  `getDefinedData(Address start, boolean forward)`
  Returns an iterator of the defined data in this listing (in proper sequence), starting at the specified address.
  `DataIterator`
  `getDefinedData(AddressSetView addressSet, boolean forward)`
  Get an iterator over the address range(s).
  `Data`
  `getDefinedDataAfter(Address addr)`
  get the defined Data object that starts at an address that is greater than the given address.
  `Data`
  `getDefinedDataAt(Address addr)`
  get the Data (defined) object that starts at the given address.
  `Data`
  `getDefinedDataBefore(Address addr)`
  get the closest defined Data object that starts at an address that is less than the given address.
  `Data`
  `getDefinedDataContaining(Address addr)`
  get the Data object that starts at the given address.
  `protected Iterator<? extends TraceData>`
  `getDefinedDataIterator(boolean forward)`
  `protected Iterator<? extends TraceData>`
  `getDefinedDataIterator(Address start, boolean forward)`
  `protected Iterator<? extends TraceData>`
  `getDefinedDataIterator(AddressSetView set, boolean forward)`
  `protected Iterator<? extends TraceCodeUnit>`
  `getDefinedUnitIterator(Address start, boolean forward)`
  `protected Iterator<? extends TraceCodeUnit>`
  `getDefinedUnitIterator(AddressSetView set, boolean forward)`
  `FunctionIterator`
  `getExternalFunctions()`
  Get an iterator over all external functions
  `Data`
  `getFirstUndefinedData(AddressSetView addressSet, TaskMonitor monitor)`
  Get the undefined Data object that falls within the set.
  `ProgramFragment`
  `getFragment(String treeName, Address addr)`
  Returns the fragment containing the given address.
  `ProgramFragment`
  `getFragment(String treeName, String name)`
  Returns the fragment with the given name.
  `Function`
  `getFunctionAt(Address entryPoint)`
  Get a function with a given entry point.
  `Function`
  `getFunctionContaining(Address addr)`
  Get a function containing an address.
  `FunctionIterator`
  `getFunctions(boolean forward)`
  Get an iterator over all functions
  `FunctionIterator`
  `getFunctions(Address start, boolean forward)`
  Get an iterator over all functions starting at address
  `FunctionIterator`
  `getFunctions(AddressSetView asv, boolean forward)`
  Get an iterator over all functions with entry points in the address set.
  `List<Function>`
  `getFunctions(String namespace, String name)`
  Returns a list of all functions with the given name in the given namespace.
  `List<Function>`
  `getGlobalFunctions(String name)`
  Returns a list of all global functions with the given name.
  `Instruction`
  `getInstructionAfter(Address addr)`
  get the closest Instruction that starts at an address that is greater than the given address.
  `Instruction`
  `getInstructionAt(Address addr)`
  get the Instruction that starts at the given address.
  `Instruction`
  `getInstructionBefore(Address addr)`
  get the closest Instruction that starts at an address that is less than the given address.
  `Instruction`
  `getInstructionContaining(Address addr)`
  get the Instruction that contains the given address.
  `protected Iterator<? extends TraceInstruction>`
  `getInstructionIterator(boolean forward)`
  `protected Iterator<? extends TraceInstruction>`
  `getInstructionIterator(Address start, boolean forward)`
  `protected Iterator<? extends TraceInstruction>`
  `getInstructionIterator(AddressSetView set, boolean forward)`
  `InstructionIterator`
  `getInstructions(boolean forward)`
  get an Instruction iterator that will iterate over the entire address space.
  `InstructionIterator`
  `getInstructions(Address start, boolean forward)`
  Returns an iterator of the instructions in this listing (in proper sequence), starting at the specified address.
  `InstructionIterator`
  `getInstructions(AddressSetView addressSet, boolean forward)`
  Get an Instruction iterator over the address range(s).
  `ProgramModule`
  `getModule(String treeName, String name)`
  Returns the module with the given name.
  `long`
  `getNumCodeUnits()`
  gets the total number of CodeUnits (Instructions, defined Data, and undefined Data)
  `long`
  `getNumDefinedData()`
  gets the total number of defined Data objects in the listing.
  `long`
  `getNumInstructions()`
  gets the total number of Instructions in the listing.
  `TraceProgramView`
  `getProgram()`
  `PropertyMap<?>`
  `getPropertyMap(String propertyName)`
  Returns the PropertyMap associated with the given name
  `ProgramModule`
  `getRootModule(long treeID)`
  Returns the root module of the program tree with the given name;
  `ProgramModule`
  `getRootModule(String treeName)`
  Gets the root module for a tree in this listing.
  `long`
  `getSnap()`
  `protected <T extends TraceCodeUnit>
  T`
  `getTopCode(Function<Long,T> codeFunc)`
  `protected <T extends TraceCodeUnit>
  Iterator<T>`
  `getTopCodeIterator(Function<Long,Iterator<T>> iterFunc, boolean forward)`
  `Trace`
  `getTrace()`
  `String[]`
  `getTreeNames()`
  Get the names of all the trees defined in this listing.
  `Data`
  `getUndefinedDataAfter(Address addr, TaskMonitor monitor)`
  Get the undefined Data object that starts at an address that is greater than the given address.
  `Data`
  `getUndefinedDataAt(Address addr)`
  get the Data (undefined) object that starts at the given address.
  `Data`
  `getUndefinedDataBefore(Address addr, TaskMonitor monitor)`
  get the closest undefined Data object that starts at an address that is less than the given address.
  `protected Iterator<TraceData>`
  `getUndefinedDataIterator(Address start, boolean forward)`
  `protected Iterator<TraceData>`
  `getUndefinedDataIterator(AddressSetView set, boolean forward)`
  `protected AddressRangeIterator`
  `getUndefinedRangeIterator(AddressSetView set, boolean forward)`
  `AddressSet`
  `getUndefinedRanges(AddressSetView set, boolean initializedMemoryOnly, TaskMonitor monitor)`
  Get the address set which corresponds to all undefined code units within the specified set of address.
  `protected Comparator<CodeUnit>`
  `getUnitComparator(boolean forward)`
  `Iterator<String>`
  `getUserDefinedProperties()`
  Returns an iterator over all user defined property names.
  `boolean`
  `isInFunction(Address addr)`
  Check if an address is contained in a function
  `protected boolean`
  `isUndefinedRange(long snap, AddressRange range)`
  `protected <T> T`
  `next(Iterator<T> it)`
  `protected TraceCodeUnit`
  `orUndef(TraceCodeUnit cu, Address address)`
  `protected TraceData`
  `orUndefData(TraceData data, Address address)`
  `void`
  `removeFunction(Address entryPoint)`
  Remove a function a given entry point.
  `boolean`
  `removeTree(String treeName)`
  Remove the tree rooted at the given name.
  `void`
  `removeUserDefinedProperty(String propertyName)`
  Removes the entire property from the program
  `void`
  `renameTree(String oldName, String newName)`
  Rename the tree.
  `protected TraceData`
  `reqUndef(TraceCodeUnit cu, Address address)`
  `void`
  `setComment(Address address, CommentType commentType, String comment)`
  Set the comment for the given comment type at the specified address.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface ghidra.program.model.listing.Listing

  `clearAll, clearCodeUnits, getComment, getCommentAddressIterator, getCommentCodeUnitIterator, getCommentHistory, isUndefined, setComment`

- ## Field Details

  - ### EMPTY_STRING_ARRAY

    public static final String[] EMPTY_STRING_ARRAY

  - ### TREE_NAME

    public static final String TREE_NAME
    See Also:
      - Constant Field Values

  - ### program

    protected final DBTraceProgramView program

  - ### codeOperations

    protected final TraceCodeOperations codeOperations

  - ### rootModule

    protected final DBTraceProgramViewRootModule rootModule

  - ### fragmentsByRegion

    protected final Map<TraceMemoryRegion,DBTraceProgramViewFragment> fragmentsByRegion

  - ### undefinedCache

    protected final Map<AddressSnap,UndefinedDBTraceData> undefinedCache

- ## Constructor Details

  - ### AbstractDBTraceProgramViewListing

    public AbstractDBTraceProgramViewListing(DBTraceProgramView program, TraceCodeOperations codeOperations)

- ## Method Details

  - ### getProgram

    public TraceProgramView getProgram()
    Specified by:
      `getProgram` in interface `TraceProgramViewListing`

  - ### getTrace

    public Trace getTrace()

  - ### getSnap

    public long getSnap()

  - ### getTopCode

    protected <T extends TraceCodeUnit> T getTopCode(Function<Long,T> codeFunc)

  - ### orUndef

    protected TraceCodeUnit orUndef(TraceCodeUnit cu, Address address)

  - ### orUndefData

    protected TraceData orUndefData(TraceData data, Address address)

  - ### reqUndef

    protected TraceData reqUndef(TraceCodeUnit cu, Address address)

  - ### next

    protected <T> T next(Iterator<T> it)

  - ### getUnitComparator

    protected Comparator<CodeUnit> getUnitComparator(boolean forward)

  - ### getTopCodeIterator

    protected <T extends TraceCodeUnit> Iterator<T> getTopCodeIterator(Function<Long,Iterator<T>> iterFunc, boolean forward)

  - ### getAddressSet

    protected AddressSet getAddressSet(Address start, boolean forward)

  - ### doCreateUndefinedUnit

    protected UndefinedDBTraceData doCreateUndefinedUnit(Address address)

  - ### getInstructionIterator

    protected Iterator<? extends TraceInstruction> getInstructionIterator(Address start, boolean forward)

  - ### getInstructionIterator

    protected Iterator<? extends TraceInstruction> getInstructionIterator(AddressSetView set, boolean forward)

  - ### getInstructionIterator

    protected Iterator<? extends TraceInstruction> getInstructionIterator(boolean forward)

  - ### getDefinedDataIterator

    protected Iterator<? extends TraceData> getDefinedDataIterator(Address start, boolean forward)

  - ### getDefinedDataIterator

    protected Iterator<? extends TraceData> getDefinedDataIterator(AddressSetView set, boolean forward)

  - ### getDefinedDataIterator

    protected Iterator<? extends TraceData> getDefinedDataIterator(boolean forward)

  - ### getDefinedUnitIterator

    protected Iterator<? extends TraceCodeUnit> getDefinedUnitIterator(Address start, boolean forward)

  - ### getDefinedUnitIterator

    protected Iterator<? extends TraceCodeUnit> getDefinedUnitIterator(AddressSetView set, boolean forward)

  - ### getUndefinedDataIterator

    protected Iterator<TraceData> getUndefinedDataIterator(Address start, boolean forward)

  - ### getUndefinedRangeIterator

    protected AddressRangeIterator getUndefinedRangeIterator(AddressSetView set, boolean forward)

  - ### isUndefinedRange

    protected boolean isUndefinedRange(long snap, AddressRange range)

  - ### getUndefinedDataIterator

    protected Iterator<TraceData> getUndefinedDataIterator(AddressSetView set, boolean forward)

  - ### getCodeUnitIterator

    protected Iterator<TraceCodeUnit> getCodeUnitIterator(AddressSetView set, boolean forward)

  - ### getCodeUnitIterator

    protected Iterator<TraceCodeUnit> getCodeUnitIterator(Address start, boolean forward)

  - ### getCodeUnitIterator

    protected Iterator<TraceCodeUnit> getCodeUnitIterator(boolean forward)

  - ### getDataIterator

    protected Iterator<TraceData> getDataIterator(AddressSetView set, boolean forward)

  - ### getDataIterator

    protected Iterator<TraceData> getDataIterator(Address start, boolean forward)

  - ### getDataIterator

    protected Iterator<TraceData> getDataIterator(boolean forward)

  - ### getCodeUnitAt

    public CodeUnit getCodeUnitAt(Address addr)
    Description copied from interface: `Listing`
    get the code unit that starts at the given address.
    Specified by:
      `getCodeUnitAt` in interface `Listing`
    Parameters:
      `addr` - the address to look for a codeUnit.
    Returns:
      the codeUnit that begins at the given address

  - ### getCodeUnitContaining

    public CodeUnit getCodeUnitContaining(Address addr)
    Description copied from interface: `Listing`
    get the code unit that contains the given address.
    Specified by:
      `getCodeUnitContaining` in interface `Listing`
    Parameters:
      `addr` - the address to look for a codeUnit.
    Returns:
      the codeUnit that contains the given address

  - ### getCodeUnitAfter

    public CodeUnit getCodeUnitAfter(Address addr)
    Description copied from interface: `Listing`
    get the next code unit that starts at an address that is greater than the given address. The search will include instructions, defined data, and undefined data.
    Specified by:
      `getCodeUnitAfter` in interface `Listing`
    Parameters:
      `addr` - the address from which to search forward.
    Returns:
      the next CodeUnit found while searching forward from addr or null if none found.

  - ### getCodeUnitBefore

    public CodeUnit getCodeUnitBefore(Address addr)
    Description copied from interface: `Listing`
    get the next code unit that starts at an address that is less than the given address. The search will include instructions, defined data, and undefined data.
    Specified by:
      `getCodeUnitBefore` in interface `Listing`
    Parameters:
      `addr` - the address from which to search backwards.
    Returns:
      The first codeUnit found while searching backwards from addr or null if none found.

  - ### getCodeUnitIterator

    public CodeUnitIterator getCodeUnitIterator(String property, boolean forward)
    Description copied from interface: `Listing`
    Get an iterator that contains all code units in the program which have the specified property type defined. Standard property types are defined in the CodeUnit class. The property types are: EOL_COMMENT, PRE_COMMENT, POST_COMMENT, USER_REFERENCE, MNEMONIC_REFERENCE, VALUE_REFERENCE. Property types can also be user defined.
    Specified by:
      `getCodeUnitIterator` in interface `Listing`
    Parameters:
      `property` - the name of the property type.
      `forward` - true means get iterator in forward direction
    Returns:
      a CodeUnitIterator that returns all code units from the indicated start address that have the specified property type defined.

  - ### getCodeUnitIterator

    public CodeUnitIterator getCodeUnitIterator(String property, Address addr, boolean forward)
    Description copied from interface: `Listing`
    Get an iterator that contains the code units which have the specified property type defined. Only code units at an address greater than or equal to the specified start address will be returned by the iterator. If the start address is null then check the entire program. Standard property types are defined in the CodeUnit class. The property types are: EOL_COMMENT, PRE_COMMENT, POST_COMMENT, USER_REFERENCE, MNEMONIC_REFERENCE, VALUE_REFERENCE. Property types can also be user defined.
    Specified by:
      `getCodeUnitIterator` in interface `Listing`
    Parameters:
      `property` - the name of the property type. (EOL_COMMENT, PRE_COMMENT, POST_COMMENT, USER_REFERENCE, MNEMONIC_REFERENCE, VALUE_REFERENCE)
      `addr` - the start address
      `forward` - true means get iterator in forward direction
    Returns:
      a CodeUnitIterator that returns all code units from the indicated start address that have the specified property type defined.

  - ### getCodeUnitIterator

    public CodeUnitIterator getCodeUnitIterator(String property, AddressSetView addrSet, boolean forward)
    Description copied from interface: `Listing`
    Get an iterator that contains the code units which have the specified property type defined. Only code units starting within the address set will be returned by the iterator. If the address set is null then check the entire program. Standard property types are defined in the CodeUnit class.
    Specified by:
      `getCodeUnitIterator` in interface `Listing`
    Parameters:
      `property` - the name of the property type.
      `addrSet` - the address set
      `forward` - true means get iterator in forward direction
    Returns:
      a CodeUnitIterator that returns all code units from the indicated address set that have the specified property type defined.

  - ### getCommentAddresses

    protected AddressSetView getCommentAddresses(CommentType commentType, AddressSetView addrSet)

  - ### getCommentAddresses

    protected AddressSetView getCommentAddresses(AddressSetView addrSet)

  - ### getCommentCodeUnitIterator

    public CodeUnitIterator getCommentCodeUnitIterator(CommentType commentType, AddressSetView addrSet)
    Description copied from interface: `Listing`
    Get a forward code unit iterator over code units that have the specified comment type.
    Specified by:
      `getCommentCodeUnitIterator` in interface `Listing`
    Parameters:
      `commentType` - the comment type
      `addrSet` - address set to iterate code unit comments over
    Returns:
      a CodeUnitIterator that returns all code units from the indicated address set that have the specified comment type defined

  - ### getCommentAddressIterator

    public AddressIterator getCommentAddressIterator(CommentType commentType, AddressSetView addrSet, boolean forward)
    Description copied from interface: `Listing`
    Get a forward iterator over addresses that have the specified comment type.
    Specified by:
      `getCommentAddressIterator` in interface `Listing`
    Parameters:
      `commentType` - the type of comment to iterate over
      `addrSet` - address set to iterate code unit comments over
      `forward` - true to iterator from lowest address to highest, false highest to lowest
    Returns:
      an AddressIterator that returns all addresses from the indicated address set that have the specified comment type defined

  - ### getCommentAddressIterator

    public AddressIterator getCommentAddressIterator(AddressSetView addrSet, boolean forward)
    Description copied from interface: `Listing`
    Get a forward iterator over addresses that have any type of comment.
    Specified by:
      `getCommentAddressIterator` in interface `Listing`
    Parameters:
      `addrSet` - address set
      `forward` - true to iterator from lowest address to highest, false highest to lowest
    Returns:
      an AddressIterator that returns all addresses from the indicated address set that have any type of comment.

  - ### getCommentAddressCount

    public long getCommentAddressCount()
    Description copied from interface: `Listing`
    Returns the number of addresses where at least one comment type has been applied.
    Specified by:
      `getCommentAddressCount` in interface `Listing`
    Returns:
      the number of addresses where at least one comment type has been applied

  - ### getComment

    public String getComment(CommentType commentType, Address address)
    Description copied from interface: `Listing`
    Get the comment for the given type at the specified address.
    Specified by:
      `getComment` in interface `Listing`
    Parameters:
      `commentType` - the comment type to retrieve
      `address` - the address of the comment.
    Returns:
      the comment string of the appropriate type or null if no comment of that type exists for this code unit

  - ### getAllComments

    public CodeUnitComments getAllComments(Address address)
    Description copied from interface: `Listing`
    Get all the comments at the given address.
    Specified by:
      `getAllComments` in interface `Listing`
    Parameters:
      `address` - the address get comments
    Returns:
      a CodeUnitComments object that has all the comments at the address.

  - ### setComment

    public void setComment(Address address, CommentType commentType, String comment)
    Description copied from interface: `Listing`
    Set the comment for the given comment type at the specified address.
    Specified by:
      `setComment` in interface `Listing`
    Parameters:
      `address` - the address of the comment.
      `commentType` - the type of comment to set
      `comment` - comment to set at the address

  - ### getCodeUnits

    public CodeUnitIterator getCodeUnits(boolean forward)
    Description copied from interface: `Listing`
    get a CodeUnit iterator that will iterate over the entire address space.
    Specified by:
      `getCodeUnits` in interface `Listing`
    Parameters:
      `forward` - true means get iterator in forward direction
    Returns:
      a CodeUnitIterator in forward direction

  - ### getCodeUnits

    public CodeUnitIterator getCodeUnits(Address start, boolean forward)
    Description copied from interface: `Listing`
    Returns an iterator of the code units in this listing (in proper sequence), starting at the specified address. The specified address indicates the first code unit that would be returned by an initial call to the `next` method. An initial call to the `previous` method would return the code unit with an address less than the specified address.
    Specified by:
      `getCodeUnits` in interface `Listing`
    Parameters:
      `start` - the start address of the iterator.
      `forward` - true means get iterator in forward direction
    Returns:
      a CodeUnitIterator positioned just before addr.

  - ### getCodeUnits

    public CodeUnitIterator getCodeUnits(AddressSetView addressSet, boolean forward)
    Description copied from interface: `Listing`
    Get an iterator over the address range(s). Only code units whose start addresses are contained in the given address set will be returned by the iterator.
    Specified by:
      `getCodeUnits` in interface `Listing`
    Parameters:
      `addressSet` - the AddressRangeSet to iterate over (required).
      `forward` - true means get iterator in forward direction
    Returns:
      a CodeUnitIterator that is restricted to the give AddressRangeSet.

  - ### getInstructionAt

    public Instruction getInstructionAt(Address addr)
    Description copied from interface: `Listing`
    get the Instruction that starts at the given address. If no Instruction has been defined to start at that address, return null.
    Specified by:
      `getInstructionAt` in interface `Listing`
    Parameters:
      `addr` - the address to check for the start of an instruction
    Returns:
      the Instruction object that starts at addr; or null if no Instructions starts at addr.

  - ### getInstructionContaining

    public Instruction getInstructionContaining(Address addr)
    Description copied from interface: `Listing`
    get the Instruction that contains the given address. If an Instruction is defined that contains that address, it will be returned. Otherwise, null will be returned.
    Specified by:
      `getInstructionContaining` in interface `Listing`
    Parameters:
      `addr` - the address to check for containment in an Instruction.
    Returns:
      the Instruction object that contains addr; or null if no Instructions contain addr.

  - ### getInstructionAfter

    public Instruction getInstructionAfter(Address addr)
    Description copied from interface: `Listing`
    get the closest Instruction that starts at an address that is greater than the given address.
    Specified by:
      `getInstructionAfter` in interface `Listing`
    Parameters:
      `addr` - The address at which to begin the forward search.
    Returns:
      the next Instruction whose starting address is greater than addr.

  - ### getInstructionBefore

    public Instruction getInstructionBefore(Address addr)
    Description copied from interface: `Listing`
    get the closest Instruction that starts at an address that is less than the given address.
    Specified by:
      `getInstructionBefore` in interface `Listing`
    Parameters:
      `addr` - The address at which to begin the backward search.
    Returns:
      the closest Instruction whose starting address is less than addr.

  - ### getInstructions

    public InstructionIterator getInstructions(boolean forward)
    Description copied from interface: `Listing`
    get an Instruction iterator that will iterate over the entire address space.
    Specified by:
      `getInstructions` in interface `Listing`
    Parameters:
      `forward` - true means get iterator in forward direction
    Returns:
      an InstructionIterator that iterates over all instructions in the program.

  - ### getInstructions

    public InstructionIterator getInstructions(Address start, boolean forward)
    Description copied from interface: `Listing`
    Returns an iterator of the instructions in this listing (in proper sequence), starting at the specified address. The specified address indicates the first instruction that would be returned by an initial call to the `next` method. An initial call to the `previous` method would return the instruction with an address less than the specified address.
    Specified by:
      `getInstructions` in interface `Listing`
    Parameters:
      `start` - the initial position of the iterator
      `forward` - true means get iterator in forward direction
    Returns:
      an InstructionIterator that iterates over all Instruction objects in the given address range set.

  - ### getInstructions

    public InstructionIterator getInstructions(AddressSetView addressSet, boolean forward)
    Description copied from interface: `Listing`
    Get an Instruction iterator over the address range(s). Only instructions whose start addresses are contained in the given address set will be returned by the iterator.
    Specified by:
      `getInstructions` in interface `Listing`
    Parameters:
      `addressSet` - the address range set to iterate over.
      `forward` - true means get iterator in forward direction
    Returns:
      a DataIterator that iterates over all defined and undefined Data objects in the given address range set.

  - ### getDataAt

    public Data getDataAt(Address addr)
    Description copied from interface: `Listing`
    get the Data (Defined or Undefined) that starts at the given address.
    Specified by:
      `getDataAt` in interface `Listing`
    Parameters:
      `addr` - the address to check for a Data object.
    Returns:
      the Data object that starts at addr; or null if no Data objects(defined or undefined) start at addr.

  - ### getDataContaining

    public Data getDataContaining(Address addr)
    Description copied from interface: `Listing`
    Gets the data object that is at or contains the given address or null if the address in not in memory or is in an instruction.
    Specified by:
      `getDataContaining` in interface `Listing`
    Parameters:
      `addr` - the address for which to find its containing data element.
    Returns:
      the Data object containing the given address or null if there is no data that contains the address.

  - ### getDataAfter

    public Data getDataAfter(Address addr)
    Description copied from interface: `Listing`
    get the closest Data object that starts at an address that is greater than the given address.
    Specified by:
      `getDataAfter` in interface `Listing`
    Parameters:
      `addr` - the address at which to begin the forward search.
    Returns:
      the next Data object whose starting address is greater than addr.

  - ### getDataBefore

    public Data getDataBefore(Address addr)
    Description copied from interface: `Listing`
    get the closest Data object that starts at an address that is less than the given address.
    Specified by:
      `getDataBefore` in interface `Listing`
    Parameters:
      `addr` - The address at which to begin the backward search.
    Returns:
      the closest Data object whose starting address is less than addr.

  - ### getData

    public DataIterator getData(boolean forward)
    Description copied from interface: `Listing`
    get a Data iterator that will iterate over the entire address space; returning both defined and undefined Data objects.
    Specified by:
      `getData` in interface `Listing`
    Parameters:
      `forward` - true means get iterator in forward direction
    Returns:
      a DataIterator that iterates over all defined and undefined Data object in the program.

  - ### getData

    public DataIterator getData(Address start, boolean forward)
    Description copied from interface: `Listing`
    Returns an iterator of the data in this listing (in proper sequence), starting at the specified address. The specified address indicates the first Data that would be returned by an initial call to the `next` method. An initial call to the `previous` method would return the Data with an address less than the specified address.
    Specified by:
      `getData` in interface `Listing`
    Parameters:
      `start` - the initial position of the iterator
      `forward` - true means get iterator in forward direction
    Returns:
      a DataIterator that iterates over all Data objects in the given address range set.

  - ### getData

    public DataIterator getData(AddressSetView addressSet, boolean forward)
    Description copied from interface: `Listing`
    Get an iterator over the address range(s). Only data whose start addresses are contained in the given address set will be returned by the iterator.
    Specified by:
      `getData` in interface `Listing`
    Parameters:
      `addressSet` - the address range set to iterate over.
      `forward` - true means get iterator in forward direction
    Returns:
      a DataIterator that iterates over all defined and undefined Data objects in the given address range set.

  - ### getDefinedDataAt

    public Data getDefinedDataAt(Address addr)
    Description copied from interface: `Listing`
    get the Data (defined) object that starts at the given address. If no Data object is defined at that address, then return null.
    Specified by:
      `getDefinedDataAt` in interface `Listing`
    Parameters:
      `addr` - The address to check for defined Data.
    Returns:
      a Data object that starts at addr, or null if no Data object has been defined to start at addr.

  - ### getDefinedDataContaining

    public Data getDefinedDataContaining(Address addr)
    Description copied from interface: `Listing`
    get the Data object that starts at the given address. If no Data objects have been defined that contain that address, then return null.
    Specified by:
      `getDefinedDataContaining` in interface `Listing`
    Parameters:
      `addr` - the address to check for containment in a defined Data object.
    Returns:
      the defined Data object containing addr.

  - ### getDefinedDataAfter

    public Data getDefinedDataAfter(Address addr)
    Description copied from interface: `Listing`
    get the defined Data object that starts at an address that is greater than the given address.
    Specified by:
      `getDefinedDataAfter` in interface `Listing`
    Parameters:
      `addr` - the address at which to begin the forward search.
    Returns:
      the next defined Data object whose starting address is greater than addr.

  - ### getDefinedDataBefore

    public Data getDefinedDataBefore(Address addr)
    Description copied from interface: `Listing`
    get the closest defined Data object that starts at an address that is less than the given address.
    Specified by:
      `getDefinedDataBefore` in interface `Listing`
    Parameters:
      `addr` - The address at which to begin the backward search.
    Returns:
      the closest defined Data object whose starting address is less than addr.

  - ### getDefinedData

    public DataIterator getDefinedData(boolean forward)
    Description copied from interface: `Listing`
    get a Data iterator that will iterate over the entire address space; returning only defined Data objects.
    Specified by:
      `getDefinedData` in interface `Listing`
    Parameters:
      `forward` - true means get iterator in forward direction
    Returns:
      a DataIterator that iterates over all defined Data objects in the program.

  - ### getDefinedData

    public DataIterator getDefinedData(Address start, boolean forward)
    Description copied from interface: `Listing`
    Returns an iterator of the defined data in this listing (in proper sequence), starting at the specified address. The specified address indicates the first defined Data that would be returned by an initial call to the `next` method. An initial call to the `previous` method would return the defined Data with an address less than the specified address.
    Specified by:
      `getDefinedData` in interface `Listing`
    Parameters:
      `start` - the initial position of the iterator
      `forward` - true means get iterator in forward direction
    Returns:
      a DataIterator that iterates over all defined Data objects in the given address range set.

  - ### getDefinedData

    public DataIterator getDefinedData(AddressSetView addressSet, boolean forward)
    Description copied from interface: `Listing`
    Get an iterator over the address range(s). Only defined data whose start addresses are contained in the given address set will be returned by the iterator.
    Specified by:
      `getDefinedData` in interface `Listing`
    Parameters:
      `addressSet` - the address range set to iterate over.
      `forward` - true means get iterator in forward direction
    Returns:
      a DataIterator that iterates over all defined Data objects in the given address range set.

  - ### getUndefinedDataAt

    public Data getUndefinedDataAt(Address addr)
    Description copied from interface: `Listing`
    get the Data (undefined) object that starts at the given address.
    Specified by:
      `getUndefinedDataAt` in interface `Listing`
    Parameters:
      `addr` - The address to check for undefined data.
    Returns:
      a default DataObject if bytes exist at addr and nothing has been defined to exist there. Otherwise returns null.

  - ### getUndefinedDataAfter

    public Data getUndefinedDataAfter(Address addr, TaskMonitor monitor)
    Description copied from interface: `Listing`
    Get the undefined Data object that starts at an address that is greater than the given address. This operation can be slow for large programs so a TaskMonitor is required.
    Specified by:
      `getUndefinedDataAfter` in interface `Listing`
    Parameters:
      `addr` - the address at which to begin the forward search.
      `monitor` - a task monitor allowing this operation to be cancelled
    Returns:
      the next undefined Data object whose starting address is greater than addr.

  - ### getUndefinedDataBefore

    public Data getUndefinedDataBefore(Address addr, TaskMonitor monitor)
    Description copied from interface: `Listing`
    get the closest undefined Data object that starts at an address that is less than the given address. This operation can be slow for large programs so a TaskMonitor is required.
    Specified by:
      `getUndefinedDataBefore` in interface `Listing`
    Parameters:
      `addr` - The address at which to begin the backward search.
      `monitor` - a task monitor allowing this operation to be cancelled
    Returns:
      the closest undefined Data object whose starting address is less than addr.

  - ### getFirstUndefinedData

    public Data getFirstUndefinedData(AddressSetView addressSet, TaskMonitor monitor)
    Description copied from interface: `Listing`
    Get the undefined Data object that falls within the set. This operation can be slow for large programs so a TaskMonitor is required.
    Specified by:
      `getFirstUndefinedData` in interface `Listing`
    Parameters:
      `addressSet` - the addressSet at which to find the first undefined address.
      `monitor` - a task monitor allowing this operation to be cancelled
    Returns:
      the next undefined Data object whose starting address falls within the addresSet.

  - ### getUndefinedRanges

    public AddressSet getUndefinedRanges(AddressSetView set, boolean initializedMemoryOnly, TaskMonitor monitor) throws CancelledException
    Get the address set which corresponds to all undefined code units within the specified set of address.
    Specified by:
      `getUndefinedRanges` in interface `Listing`
    Parameters:
      `set` - set of addresses to search
      `initializedMemoryOnly` - if true set will be constrained to initialized memory areas, if false set will be constrained to all defined memory blocks.
      `monitor` - task monitor
    Returns:
      address set corresponding to undefined code units
    Throws:
      `CancelledException` - if monitor cancelled
    Implementation Notes:
      This could maybe use a (lazy) view; however, to be consistent with expectations established by `ProgramDB`, it constructs the actual set, and permits cancellation by the monitor.

  - ### getDefinedCodeUnitAfter

    public CodeUnit getDefinedCodeUnitAfter(Address addr)
    Description copied from interface: `Listing`
    Returns the next instruction or defined data after the given address;
    Specified by:
      `getDefinedCodeUnitAfter` in interface `Listing`
    Parameters:
      `addr` - the address at which to begin the search
    Returns:
      the next instruction or defined data at an address higher than the given address.

  - ### getDefinedCodeUnitBefore

    public CodeUnit getDefinedCodeUnitBefore(Address addr)
    Description copied from interface: `Listing`
    Returns the closest instruction or defined data that starts before the given address.
    Specified by:
      `getDefinedCodeUnitBefore` in interface `Listing`
    Parameters:
      `addr` - the address at which to begin the search
    Returns:
      the closest instruction or defined data at an address below the given address.

  - ### getUserDefinedProperties

    public Iterator<String> getUserDefinedProperties()
    Description copied from interface: `Listing`
    Returns an iterator over all user defined property names.
    Specified by:
      `getUserDefinedProperties` in interface `Listing`
    Returns:
      an iterator over all user defined property names.

  - ### removeUserDefinedProperty

    public void removeUserDefinedProperty(String propertyName)
    Description copied from interface: `Listing`
    Removes the entire property from the program
    Specified by:
      `removeUserDefinedProperty` in interface `Listing`
    Parameters:
      `propertyName` - the name of the property to remove.

  - ### getPropertyMap

    public PropertyMap<?> getPropertyMap(String propertyName)
    Description copied from interface: `Listing`
    Returns the PropertyMap associated with the given name
    Specified by:
      `getPropertyMap` in interface `Listing`
    Parameters:
      `propertyName` - the property name
    Returns:
      PropertyMap the propertyMap object.

  - ### createInstruction

    public Instruction createInstruction(Address addr, InstructionPrototype prototype, MemBuffer memBuf, ProcessorContextView context, int forcedLengthOverride) throws CodeUnitInsertionException
    Description copied from interface: `Listing`
    Creates a new Instruction object at the given address. The specified context is only used to create the associated prototype. It is critical that the context be written immediately after creation of the instruction and must be done with a single set operation on the program context. Once a set context is done on the instruction address, any subsequent context changes will result in a `ContextChangeException`
    Specified by:
      `createInstruction` in interface `Listing`
    Parameters:
      `addr` - the address at which to create an instruction
      `prototype` - the InstructionPrototype that describes the type of instruction to create.
      `memBuf` - buffer that provides the bytes that make up the instruction.
      `context` - the processor context at this location.
      `forcedLengthOverride` - instruction byte-length (must be in the range 0..prototype.getLength()). If smaller than the prototype length it must have a value no greater than 7, otherwise an error will be thrown. A value of 0 or greater-than-or-equal the prototype length will be ignored and not impose and override length. The length value must be a multiple of the `instruction alignment` .
    Returns:
      the newly created instruction.
    Throws:
      `CodeUnitInsertionException` - thrown if the new Instruction would overlap and existing `CodeUnit` or the specified `length` is unsupported.

  - ### addInstructions

    public AddressSetView addInstructions(InstructionSet instructionSet, boolean overwrite) throws CodeUnitInsertionException
    Description copied from interface: `Listing`
    Creates a complete set of instructions. A preliminary pass will be made checking for code unit conflicts which will be marked within the instructionSet causing dependent blocks to get pruned.
    Specified by:
      `addInstructions` in interface `Listing`
    Parameters:
      `instructionSet` - the set of instructions to be added. All code unit conflicts will be marked within the instructionSet and associated blocks.
      `overwrite` - if true, overwrites existing code units.
    Returns:
      the set of addresses over which instructions were actually added to the program. This may differ from the InstructionSet address set if conflict errors occurred. Such conflict errors will be recorded within the InstructionSet and its InstructionBlocks.
    Throws:
      `CodeUnitInsertionException` - if the instruction set is incompatible with the program memory

  - ### createData

    public Data createData(Address addr, DataType dataType, int length) throws CodeUnitInsertionException
    Description copied from interface: `Listing`
    Creates a new defined Data object of a given length at the given address. This ignores the bytes that are present
    Specified by:
      `createData` in interface `Listing`
    Parameters:
      `addr` - the address at which to create a new Data object.
      `dataType` - the Data Type that describes the type of Data object to create.
      `length` - the length of the datatype.
    Returns:
      newly created data unit
    Throws:
      `CodeUnitInsertionException` - thrown if the new Instruction would overlap and existing Instruction or defined data.

  - ### createData

    public Data createData(Address addr, DataType dataType) throws CodeUnitInsertionException
    Description copied from interface: `Listing`
    Creates a new defined Data object at the given address. This ignores the bytes that are present
    Specified by:
      `createData` in interface `Listing`
    Parameters:
      `addr` - the address at which to create a new Data object.
      `dataType` - the Data Type that describes the type of Data object to create.
    Returns:
      newly created data unit
    Throws:
      `CodeUnitInsertionException` - thrown if the new Instruction would overlap and existing Instruction or defined data.

  - ### clearCodeUnits

    public void clearCodeUnits(Address startAddr, Address endAddr, boolean clearContext)
    Description copied from interface: `Listing`
    Clears any code units in the given range returning everything to "db"s, and removing any references in the affected area. Note that the module and fragment structure is unaffected. If part of a code unit is contained in the given address range then the whole code unit will be cleared.
    Specified by:
      `clearCodeUnits` in interface `Listing`
    Parameters:
      `startAddr` - the start address of the area to be cleared.
      `endAddr` - the end address of the area to be cleared.
      `clearContext` - clear context register values if true

  - ### clearComments

    public void clearComments(Address startAddr, Address endAddr)
    Description copied from interface: `Listing`
    Clears the comments in the given range.
    Specified by:
      `clearComments` in interface `Listing`
    Parameters:
      `startAddr` - the start address of the range to be cleared
      `endAddr` - the end address of the range to be cleared

  - ### clearProperties

    public void clearProperties(Address startAddr, Address endAddr, TaskMonitor monitor) throws CancelledException
    Description copied from interface: `Listing`
    Clears the properties in the given range.
    Specified by:
      `clearProperties` in interface `Listing`
    Parameters:
      `startAddr` - the start address of the range to be cleared
      `endAddr` - the end address of the range to be cleared
      `monitor` - task monitor for cancelling operation.
    Throws:
      `CancelledException` - if the operation was cancelled.

  - ### getFragment

    public ProgramFragment getFragment(String treeName, Address addr)
    Description copied from interface: `Listing`
    Returns the fragment containing the given address.
    Specified by:
      `getFragment` in interface `Listing`
    Parameters:
      `treeName` - name of the tree to search
      `addr` - the address that is contained within a fragment.
    Returns:
      will return null if the address is not in the program.

  - ### getModule

    public ProgramModule getModule(String treeName, String name)
    Description copied from interface: `Listing`
    Returns the module with the given name.
    Specified by:
      `getModule` in interface `Listing`
    Parameters:
      `treeName` - name of the tree to search
      `name` - the name of the module to find.
    Returns:
      will return null if there is no module with the given name.

  - ### getFragment

    public ProgramFragment getFragment(String treeName, String name)
    Description copied from interface: `Listing`
    Returns the fragment with the given name.
    Specified by:
      `getFragment` in interface `Listing`
    Parameters:
      `treeName` - name of the tree to search
      `name` - the name of the fragment to find.
    Returns:
      will return null if there is no fragment with the given name.

  - ### createRootModule

    public ProgramModule createRootModule(String treeName) throws DuplicateNameException
    Description copied from interface: `Listing`
    Create a new tree that will be identified by the given name. By default, the new root module is populated with fragments based on memory blocks. Note that the root module's name is not the same as its tree name. The root module name defaults to the name of the program.
    Specified by:
      `createRootModule` in interface `Listing`
    Parameters:
      `treeName` - name of the tree to search
    Returns:
      root module
    Throws:
      `DuplicateNameException` - if a tree with the given name already exists

  - ### getRootModule

    public ProgramModule getRootModule(String treeName)
    Description copied from interface: `Listing`
    Gets the root module for a tree in this listing.
    Specified by:
      `getRootModule` in interface `Listing`
    Parameters:
      `treeName` - name of tree
    Returns:
      the root module for the listing; returns null if there is no tree rooted at a module with the given name.

  - ### getRootModule

    public ProgramModule getRootModule(long treeID)
    Description copied from interface: `Listing`
    Returns the root module of the program tree with the given name;
    Specified by:
      `getRootModule` in interface `Listing`
    Parameters:
      `treeID` - id of the program tree
    Returns:
      the root module of the specified tree.

  - ### getDefaultRootModule

    public ProgramModule getDefaultRootModule()
    Description copied from interface: `Listing`
    Returns the root module for the default program tree. This would be the program tree that has existed the longest.
    Specified by:
      `getDefaultRootModule` in interface `Listing`
    Returns:
      the root module for the oldest existing program tree.

  - ### getTreeNames

    public String[] getTreeNames()
    Description copied from interface: `Listing`
    Get the names of all the trees defined in this listing.
    Specified by:
      `getTreeNames` in interface `Listing`
    Returns:
      the names of all program trees defined in the program.

  - ### removeTree

    public boolean removeTree(String treeName)
    Description copied from interface: `Listing`
    Remove the tree rooted at the given name.
    Specified by:
      `removeTree` in interface `Listing`
    Parameters:
      `treeName` - the name of the tree to remove.
    Returns:
      true if the tree was removed; return false if this is the last tree for the program; cannot delete the last tree.

  - ### renameTree

    public void renameTree(String oldName, String newName) throws DuplicateNameException
    Description copied from interface: `Listing`
    Rename the tree. This method does not change the root module's name only the identifier for the tree.
    Specified by:
      `renameTree` in interface `Listing`
    Parameters:
      `oldName` - old name of the tree
      `newName` - new name of the tree.
    Throws:
      `DuplicateNameException` - if newName already exists for a root module

  - ### getNumCodeUnits

    public long getNumCodeUnits()
    Description copied from interface: `Listing`
    gets the total number of CodeUnits (Instructions, defined Data, and undefined Data)
    Specified by:
      `getNumCodeUnits` in interface `Listing`
    Returns:
      the total number of CodeUnits in the listing.

  - ### getNumDefinedData

    public long getNumDefinedData()
    Description copied from interface: `Listing`
    gets the total number of defined Data objects in the listing.
    Specified by:
      `getNumDefinedData` in interface `Listing`
    Returns:
      the total number of defined Data objects in the listing.

  - ### getNumInstructions

    public long getNumInstructions()
    Description copied from interface: `Listing`
    gets the total number of Instructions in the listing.
    Specified by:
      `getNumInstructions` in interface `Listing`
    Returns:
      number of Instructions

  - ### getDataTypeManager

    public DataTypeManager getDataTypeManager()
    Description copied from interface: `Listing`
    Get the data type manager for the program.
    Specified by:
      `getDataTypeManager` in interface `Listing`
    Returns:
      the datatype manager for the program.

  - ### createFunction

    public Function createFunction(String name, Address entryPoint, AddressSetView body, SourceType source) throws InvalidInputException, OverlappingFunctionException
    Description copied from interface: `Listing`
    Create a function with an entry point and a body of addresses.
    Specified by:
      `createFunction` in interface `Listing`
    Parameters:
      `name` - the name of the function to create
      `entryPoint` - the entry point for the function
      `body` - the address set that makes up the functions body
      `source` - the source of this function
    Returns:
      the created function
    Throws:
      `InvalidInputException` - if the name contains invalid characters
      `OverlappingFunctionException` - if the given body overlaps with an existing function.

  - ### createFunction

    public Function createFunction(String name, Namespace nameSpace, Address entryPoint, AddressSetView body, SourceType source) throws InvalidInputException, OverlappingFunctionException
    Description copied from interface: `Listing`
    Create a function in the specified namespace with an entry point and a body of addresses.
    Specified by:
      `createFunction` in interface `Listing`
    Parameters:
      `name` - the name of the function to create
      `nameSpace` - the namespace in which to create the function
      `entryPoint` - the entry point for the function
      `body` - the address set that makes up the functions body
      `source` - the source of this function
    Returns:
      the created function
    Throws:
      `InvalidInputException` - if the name contains invalid characters
      `OverlappingFunctionException` - if the given body overlaps with an existing function.

  - ### removeFunction

    public void removeFunction(Address entryPoint)
    Description copied from interface: `Listing`
    Remove a function a given entry point.
    Specified by:
      `removeFunction` in interface `Listing`
    Parameters:
      `entryPoint` - entry point of function to be removed.

  - ### getFunctionAt

    public Function getFunctionAt(Address entryPoint)
    Description copied from interface: `Listing`
    Get a function with a given entry point.
    Specified by:
      `getFunctionAt` in interface `Listing`
    Parameters:
      `entryPoint` - entry point of the function
    Returns:
      function at the entry point

  - ### getGlobalFunctions

    public List<Function> getGlobalFunctions(String name)
    Description copied from interface: `Listing`
    Returns a list of all global functions with the given name.
    Specified by:
      `getGlobalFunctions` in interface `Listing`
    Parameters:
      `name` - the name of the functions to retrieve.
    Returns:
      a list of all global functions with the given name.

  - ### getFunctions

    public List<Function> getFunctions(String namespace, String name)
    Description copied from interface: `Listing`
    Returns a list of all functions with the given name in the given namespace.
    Specified by:
      `getFunctions` in interface `Listing`
    Parameters:
      `namespace` - the namespace to search for functions of the given name. Can be null, in which case it will search the global namespace.
      `name` - the name of the functions to retrieve.
    Returns:
      a list of all global functions with the given name.

  - ### getFunctionContaining

    public Function getFunctionContaining(Address addr)
    Description copied from interface: `Listing`
    Get a function containing an address.
    Specified by:
      `getFunctionContaining` in interface `Listing`
    Parameters:
      `addr` - the address to search.
    Returns:
      function containing this address, null otherwise

  - ### getExternalFunctions

    public FunctionIterator getExternalFunctions()
    Description copied from interface: `Listing`
    Get an iterator over all external functions
    Specified by:
      `getExternalFunctions` in interface `Listing`
    Returns:
      an iterator over all currently defined external functions.

  - ### getFunctions

    public FunctionIterator getFunctions(boolean forward)
    Description copied from interface: `Listing`
    Get an iterator over all functions
    Specified by:
      `getFunctions` in interface `Listing`
    Parameters:
      `forward` - if true functions are return in address order, otherwise backwards address order
    Returns:
      an iterator over all currently defined functions.

  - ### getFunctions

    public FunctionIterator getFunctions(Address start, boolean forward)
    Description copied from interface: `Listing`
    Get an iterator over all functions starting at address
    Specified by:
      `getFunctions` in interface `Listing`
    Parameters:
      `start` - the address to start iterating at.
      `forward` - if true functions are return in address order, otherwise backwards address order
    Returns:
      an iterator over functions

  - ### getFunctions

    public FunctionIterator getFunctions(AddressSetView asv, boolean forward)
    Description copied from interface: `Listing`
    Get an iterator over all functions with entry points in the address set.
    Specified by:
      `getFunctions` in interface `Listing`
    Parameters:
      `asv` - the set of addresses to iterator function entry points over.
      `forward` - if true functions are return in address order, otherwise backwards address order
    Returns:
      an iterator over functions

  - ### isInFunction

    public boolean isInFunction(Address addr)
    Description copied from interface: `Listing`
    Check if an address is contained in a function
    Specified by:
      `isInFunction` in interface `Listing`
    Parameters:
      `addr` - address to test
    Returns:
      true if this address is in one or more functions

  - ### getCommentHistory

    public CommentHistory[] getCommentHistory(Address addr, CommentType commentType)
    Description copied from interface: `Listing`
    Get the comment history for comments at the given address.
    Specified by:
      `getCommentHistory` in interface `Listing`
    Parameters:
      `addr` - address for comments
      `commentType` - `comment type`
    Returns:
      array of comment history records