anchor.diff:              // or the name of the editor to use ...
               if (" " == info["separator"]) { // parameter was not attached to option
   
  -                // act as if the user specified --open=eclipse
  -                args.push(argSpec.getValue<Editor>().name)
  +                // act as if the user specified --open=defaultEditor
  +                args.push(Editor.defaultEditor.name)
               }
               return false // picocli's internal parsing is resumed for this option
           }
  
positive.code: }
  ----
  
  ==== IParameterPreprocessor Parser Plugin
  
  Introduced in picocli 4.6, the `IParameterPreprocessor` is also a parser plugin, similar to `IParameterConsumer`, but more flexible.
  
  
negative.code:     @Parameters(index = "0", arity="0..1", description = "The file to edit.")
      File file;
  
      enum Editor { defaultEditor, eclipse, idea, netbeans }
  
      @Option(names = "--open", arity = "0..1", preprocessor = Edit.MyPreprocessor.class,
          description = {
             "Optionally specify the editor to use (${COMPLETION-CANDIDATES}). " +
             "If omitted the default editor is used. ",
             "Example: edit --open=idea FILE opens IntelliJ IDEA (notice the '=' separator)",
             "         edit --open FILE opens the specified file in the default editor"
          })
      Editor editor = Editor.defaultEditor;
  
      static class MyPreprocessor implements IParameterPreprocessor {
          public boolean preprocess(Stack<String> args,
                                    CommandSpec commandSpec,
                                    ArgSpec argSpec,
                                    Map<String, Object> info) {
              // we need to decide whether the next arg is the file to edit
              // or the name of the editor to use...
              if (" ".equals(info.get("separator"))) { // parameter was not attached to option
  
                  // act as if the user specified --open=defaultEditor
                  args.push(Editor.defaultEditor.name());
              }
              return false; // picocli's internal parsing is resumed for this option
          }
      }
  }
  ----
  
  