# Package org.spongepowered.asm.mixin

Primary interaction points ( `@Mixin` and `@MixinEnvironment`) and annotations (eg. `@Mixin`, `@Shadow`) for mixin consumers.

- Class Summary
  Class | Description
  --- | ---
  FabricUtil |
  MixinEnvironment | The mixin environment manages global state information for the mixin subsystem.
  MixinEnvironment.Phase | Environment phase, deliberately not implemented as an enum
  Mixins | Entry point for registering global mixin resources.

- Enum Summary
  Enum | Description
  --- | ---
  Interface.Remap | Describes the remapping strategy applied to methods matching this interface.
  MixinEnvironment.CompatibilityLevel | Operational compatibility level for the mixin subsystem
  MixinEnvironment.Feature | Mixin features which can be specified in mixin configs as required for the config to be valid.
  MixinEnvironment.Option | Mixin options
  MixinEnvironment.Side | Represents a "side", client or dedicated server

- Annotation Types Summary
  Annotation Type | Description
  --- | ---
  Debug | Anotation used to decorate items you might wish to examine after mixin application.
  Dynamic | Decorator annotation for mixin elements whose targets are not available in the original class and are either fabricated or transformed at runtime.
  Final | This annotation has two uses: On an `Shadow` field, it can be used to raise an error-level log message if any write occurrences appear in the mixin bytecode.
  Implements | Pseudo-implements decorator for Mixins with conflicting methods in a superclass to soft-implement an interface.
  Interface | This annotation is used to define information for a soft-implemented interface.
  Intrinsic | This annotation allows fine-tuning of the overwrite policy for a soft-implemented interface member method.
  Mixin | The main decorator for mixin classes, this annotation denotes a class as a mixin and specifies two key attributes: The target classes Every mixin requires at least one target class in order to be valid.
  Mutable | Use in conjunction with `Final` or `Accessor` to indicate that whilst a target field is final in the target class, mutation within the mixin is intentional.
  Overwrite | Annotation used to indicate a mixin class member which must overwrite a method in the target class.
  Pseudo | A Mixin marked as `@Pseudo` is allowed to target classes which are not available at compile time and may not be available at runtime.
  Shadow | Used to indicate a Mixin class member which is acting as a placeholder for a method or field in the target class
  SoftOverride | Decorator for methods which override a method in a supermixin which the containing mixin does not directly extend
  Unique | This annotation, when applied to a member method or field in a mixin, indicates that the member should never overwrite a matching member in the target class.