# findSuperClassArguments method

1. @override

List<Class> findSuperClassArguments(

1. Class parentClass, [
2. bool declared = true

])
override

Finds the type arguments of the superclass of a given `parentClass`.

Parameters:

- `parentClass`: The class whose superclass should be located.
- `declared`: If `true` (default), returns the directly declared superclass.
  If `false`, searches up the hierarchy.

Returns:

- A list of Class instances representing the type arguments of the superclass.

## Example

    final listClass = await loader.loadClass<List>('dart:core/list.dart.List');
    final superIterableArgs = loader.findSuperClassArguments(listClass);
    print(superIterableArgs.map((arg) => arg.qualifiedName)); // e.g., ["dart:core/iterable.dart.Iterable"]

## Implementation

    @override
    List<Class> findSuperClassArguments(Class parentClass, [bool declared = true]) {
      _checkClosed();

      final cacheKey = "${_buildCacheKey(parentClass)}:superClassArguments:$declared";

      // Check cache first
      final cached = _superClassArgumentCache[cacheKey];
      if (cached != null) {
        _hitCount++;
        return List.from(cached);
      }

      _missCount++;

      final superType = parentClass.getTypeDeclaration().asClass()?.getSuperClass();
      if(superType == null) return [];

      final result = superType.getTypeArguments().map((t) => _getFromLink(t, parentClass.getProtectionDomain(), useType: declared)).toList();

      // Cache result
      _superClassArgumentCache[cacheKey] = result;

      return List.from(result.toSet().toList());
    }