# Package org.spongepowered.asm.mixin

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

Class Summary
FabricUtil
MixinEnvironment: The mixin environment manages global state information for the mixin subsystem.
MixinEnvironment.Phase: Environment phase, deliberately not implemented as an enum
MixinIntrinsics: Intrinsics for use in @Mixin classes.
Mixins: Entry point for registering global mixin resources.

Enum Summary
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
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.