anchor.diff:  ----
   CommandLine commandLine = new CommandLine(new MyCommand());
   
  -CommonOptionsAndAttributes mixin = new ReusableOptions();
  +ReusableOptions mixin = new ReusableOptions();
   commandline.addMixin("myMixin", mixin);
   ----
   
  
positive.code: ----
  
  === Programmatic Mixin
  Picocli 3.0 introduces the concept of "mixins". Mixins are a convenient alternative to subclassing. Common options, common positional parameters or common usage help attributes can be defined in a separate class. This class can be reused in many other commands, either programmatically with the `CommandLine.addMixin` method, or declaratively with the `@Mixin` annotation.
  
  The below example shows how a mixin can be added programmatically with the `CommandLine.addMixin` method:
  
  
negative.code: ----
  When using the `@Mixin` annotation, the command can reference the mixed-in object directly (for example, the `MyCommand` can reference its `myMixin` field to access the `ReusableOptions` object.
  
  [source,java]
  ----
  MyCommand zip = new MyCommand();
  CommandLine commandLine = new CommandLine(zip);
  
  // the options defined in ReusableOptions have been added to the zip command
  commandLine.parse("-vvv");
  assert zip.myMixin.verbosity.length == 3;
  ----
  
  Mixins added with the `@Mixin` annotation can also be accessed via the map returned by `CommandLine.getMixins`.
  
  
  === Reuse Combinations
  
  The above mechanisms can be combined in any way. Mixins can be nested, and there is no limitation to how deeply mixins can be nested. A mixin may also inherit options, positional parameters and command attributes from a super class.
  
  An option with the same name should not be defined multiple times or a `DuplicateOptionAnnotationsException` is thrown during initialization. Positional parameters for the same position may be defined multiple times, they can co-exist.
  
  