# Welcome to the Mixin Javadoc

Mixin is a trait/mixin framework for Java using ASM and hooking into the runtime class-loading process via Mojang's LegacyLauncher system. The main documentation for Mixin can be found in the Wiki.

This Javadoc contains documentation for individual features and annotations. For additional help use the channel `#mixin` on the Sponge Discord Server.

Packages
Package | Description
--- | ---
org.spongepowered.asm.launch | Classes which support environment-agnostic launch logic for the Mixin subsystem and base classes and interfaces for environment-specific adapters.
org.spongepowered.asm.launch.platform | Base classes for environment-specific adapters and default platform-agnostic handlers for environment and mixin containers.
org.spongepowered.asm.launch.platform.container | Default (platform-agnostic) container handles
org.spongepowered.asm.logging | Centrallised logging so that all logging can be delegated to a logging adapter supplied by the mixin service
org.spongepowered.asm.mixin | Primary interaction points ( `@Mixin` and `@MixinEnvironment`) and annotations (eg. `@Mixin`, `@Shadow`) for mixin consumers.
org.spongepowered.asm.mixin.connect | See `IMixinConnector`
org.spongepowered.asm.mixin.extensibility | Interfaces for internal Mixin objects which provide extensibility for mixin consumers.
org.spongepowered.asm.mixin.gen | Generators, a special type of injector which replace the annotated method with synthetic content, see `@Accessor` and `@Invoker`.
org.spongepowered.asm.mixin.injection | Injectors are class postprocessors which search for annotated methods merged by mixins and perform weaving operations as requested.
org.spongepowered.asm.mixin.injection.callback | Implementation of callback injector functionality provided by `@#64;Inject`.
org.spongepowered.asm.mixin.injection.code | Common base classes for injector implementations.
org.spongepowered.asm.mixin.injection.invoke | Implementation of injectors which primarily mutate method invocations.
org.spongepowered.asm.mixin.injection.invoke.arg | Support classes for `@ModifyArgs` which handle argument bundles (`Args`).
org.spongepowered.asm.mixin.injection.invoke.util | Utility classes for invoke injectors.
org.spongepowered.asm.mixin.injection.modify | Implementation of variable modifier injector specified by `@ModifyVariable`
org.spongepowered.asm.mixin.injection.points | Built-in `injection point` classes.
org.spongepowered.asm.mixin.injection.selectors | Target selectors are consumed by injectors and injection points when identifying target members in a class or inside a method, see `ITargetSelector`.
org.spongepowered.asm.mixin.injection.selectors.dynamic | Dynamic target selectors provide custom logic for selecting injector targets.
org.spongepowered.asm.mixin.injection.struct | Internal data bundles used by injectors during application.
org.spongepowered.asm.mixin.refmap | Refmaps are data bundles which map string references to obfuscated counterparts at runtime, see `ReferenceMapper`.
org.spongepowered.asm.mixin.struct | Internal data bundles used by mixin during application.
org.spongepowered.asm.mixin.transformer | Internal mixin transformation pipeline classes.
org.spongepowered.asm.mixin.transformer.ext | Internal mixin transformation pipeline extension interface and registry of active extensions.
org.spongepowered.asm.mixin.transformer.ext.extensions | Internal mixin transformation pipeline extensions.
org.spongepowered.asm.mixin.transformer.meta | Meta annotations applied by the mixin processor to fingerprint mixin actions.
org.spongepowered.asm.mixin.transformer.struct |
org.spongepowered.asm.obfuscation | Obfuscation-related structs for interoperability with the annotation processor and runtime obfuscation utilities.
org.spongepowered.asm.obfuscation.mapping | Interface for structs for method and field mappings.
org.spongepowered.asm.obfuscation.mapping.common | Structs for method and field mappings.
org.spongepowered.asm.obfuscation.mapping.mcp | Structs for method and field mappings with specific behaviour for MCP
org.spongepowered.asm.service | Mixin service interface, with base classes for all the moving parts of the Mixin transformation pipeline and supporting infrastructure.
org.spongepowered.asm.transformers | Specialised ASM utility and base classes used by the mixin processor.
org.spongepowered.asm.util | Utility classes used by the entire Mixin pipeline, including utilities for working with bytecode as well as general-purpose tools and parsers.
org.spongepowered.asm.util.asm | Utilities, abstractions and specialised subclasses used by Mixin for interacting with ASM.
org.spongepowered.asm.util.logging | Logging abstraction to provide a unified logging interface for classes which operate both at runtime and in the AP.
org.spongepowered.asm.util.perf | Performance profiling for Mixin.