# getUltimateNames method

1. @protected

List<String> getUltimateNames()

Returns all registered target names as an unmodifiable view for the current thread.

Target names are the ultimate targets that aliases point to, after resolving any alias chains.

## Returns:

An unmodifiable list of all target names

## Example:

    final registry = SimpleAliasRegistry();
    registry.registerAlias('ultimateService', 'alias1');
    registry.registerAlias('alias1', 'alias2');
    registry.registerAlias('otherService', 'alias3');

    final names = registry.getUltimateNames();
    print(names); // ['ultimateService', 'otherService']

## Implementation

    @protected
    List<String> getUltimateNames() {
      return synchronized(this, () {
        final aliasMap = _getAliasMap();
        final names = <String>{};
        for (final name in aliasMap.values) {
          names.add(name);
        }
        return List.unmodifiable(names.toList());
      });
    }