anchor.diff:  components may be used.  Within these classes, you can use typical CDI mechanisms
   such as `@Inject`, `@Produces`, and `Instance<>` in order to accomplish whatever
   is required for your fraction.  Typically these components would, at the minimum,
  -inject their own fraction. They should each be marked as `@ApplicationScoped`.
  +inject their own fraction.
   
   [source,java]
   ----
   @ApplicationScoped
  -public class MyComponents implements Whatever {
  +public class MyComponent implements Whatever {
   
     @Inject
     private MyFraction myFraction;
  
positive.code: }
  ----
  
  #### `ArchivePreparer`
  
  If your fraction needs an opportunity to alter or otherwise prepare all deployed
  archives, you may implement the `org.wildfly.swarm.spi.api.ArchivePreparer` interface.
  
  [source,java]
  ----
  @ApplicationScoped
  public class MyArchivePreparer implements ArchivePreparer {
  
    @Inject
    private MyFraction myFraction;
  
    public void prepareArchive(Archive<?> archive) {
      archive.as( WARArchive.class ).setContextRoot( myFraction.getContextRoot() );
    }
  }
  ----
  
  #### `ArchiveMetadataProcessor`
  
  If your fraction needs an opportunity to process the Jandex metadata of all deployed
  archives, you may implement the `org.wildfly.swarm.spi.api.ArchiveMetadataProcessor`
  interface.
  
  [source,java]
  ----
  @ApplicationScoped
  public class MyArchiveMetadataProcessor implements ArchiveMetadataProcessor {
  
    @Inject
    private MyFraction myFraction;
  
    public void processArchive(Archive<?> archive, Index index) {
      // ...
    }
  }
  
  
negative.code: #### `@Configurable` and `Defaultable<>`
  
  When creating a new `Fraction` implementation, each of its fields
  will automatically be configurable through the `project-*.yml`
  mechanisms.  In the case that different names for the configurable
  items are desired, the `@Configuration` annotation may be used.
  
  