# ClassUtils class final

A utility class that provides static methods for working with class hierarchies and type relationships in Dart's reflection system.

This class offers functionality to traverse and analyze class inheritance structures, including superclasses, interfaces, and special handling for arrays and enums.

## Usage

    // Get the complete class hierarchy for a type
    final hierarchy = ClassUtils.getClassHierarchy(Class.of<String>());

    // The hierarchy will include:
    // - The original class (String)
    // - All superclasses up to Object
    // - All implemented interfaces
    // - Special handling for arrays and enums

    print('Class hierarchy for String:');
    for (final clazz in hierarchy) {
      print('  ${clazz.getName()}');
    }

## Features

- Complete hierarchy traversal: Walks up the entire inheritance chain
- Interface inclusion: Includes all implemented interfaces at each level
- Array support: Special handling for array component types
- Enum support: Proper enum hierarchy with Enum base class
- Duplicate prevention: Ensures no duplicate classes in the hierarchy
- Ordered results: Returns hierarchy in a logical traversal order

## Properties

hashCode → int
  The hash code for this object.
  no setter inherited
runtimeType → Type
  A representation of the runtime type of the object.
  no setter inherited

## Methods

noSuchMethod(Invocation invocation) → dynamic
  Invoked when a nonexistent method or property is accessed.
  inherited
toString() → String
  A string representation of this object.
  inherited

## Operators

operator ==(Object other) → bool
  The equality operator.
  inherited

## Static Methods

findMethodCandidatesByName(Class clazz, String methodName) → Set<Method>
  Retrieves the set of methods with the specified name from the given class.
getClassHierarchy(Class type) → List<Class>
  Retrieves the complete class hierarchy for the specified type, including all superclasses, interfaces, and special type relationships.
getMethodIfAvailable(Class clazz, String methodName, [List<Class>? paramTypes]) → Method?
  Retrieves the method with the specified name and parameter types from the given class.
getMethodOrNull(Class clazz, String methodName, List<Class> paramTypes) → Method?
  Retrieves the method with the specified name and parameter types from the given class.
getStaticMethod(Class target, String methodName) → Method?
  Retrieves the static method with the specified name from the given class.
isAssignable(Class left, Class right) → bool
  Check if the right-hand side type may be assigned to the left-hand side type.

## Constants

arrayTypeSuffix → const String
  Suffix for array class names: "[]"
nestedClassSeparator → const String
  The nested class separator character: '$'
packageSeparator → const String
  The package separator character: '.'