# LinkDeclaration class abstract

Abstract base class for type references in reflection systems.

Represents a reference to a type declaration, including:

- Type arguments
- Pointer information
- Source location metadata
- Variance information

{@template link_declaration_features}

## Key Features

- Type parameter resolution
- Source location tracking
- Variance awareness
- Canonical vs reference distinction

## Typical Implementations

Used by:

- Generic type references
- Type alias resolutions
- Cross-library type references

## Example Usage

    final link = getTypeReference<List<String>>();
    print(link.getPointerQualifiedName()); // "List"
    print(link.getTypeArguments()[0].getName()); // "String"
    print(link.getVariance()); // TypeVariance.invariant

{@endtemplate}

Inheritance
  - Object
  - Declaration
  - LinkDeclaration

## Constructors

LinkDeclaration.new()
  const

## 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

getCanonicalUri() → Uri?
  Gets the canonical definition location.
getIsCanonical() → bool
  Checks if this reference points to its canonical definition.
getIsPublic() → bool
  Checks if this declaration is a public declaration.
  inherited
getIsSynthetic() → bool
  Checks if a declaration is a synthetic declaration.
  inherited
getName() → String
  Gets the name of the declared element.
  inherited
getPointerQualifiedName() → String
  Gets the fully qualified name of the pointer type.
getPointerType() → Type
  Gets the base pointer type being referenced.
getReferenceUri() → Uri?
  Gets where this reference was found.
getType() → Type
  Gets the runtime type of the declared element.
  inherited
getTypeArguments() → List<LinkDeclaration>
  Gets the type arguments for this reference.
getUpperBound() → LinkDeclaration?
  Gets the upper bound for type variables.
getVariance() → TypeVariance
  Gets the variance annotation for this reference.
noSuchMethod(Invocation invocation) → dynamic
  Invoked when a nonexistent method or property is accessed.
  inherited
toJson() → Map<String, Object>
  Returns a JSON representation of this entity.
  inherited
toString() → String
  A string representation of this object.
  inherited

## Operators

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