void execute(final InputStream input, final PrintWriter output, final String[] args) {
    final CommandLine commandLine = new CommandLine(this).setOut(output);
    out = output;
    in = input;

    // don't require exact case to match enum values
    commandLine.setCaseInsensitiveEnumValuesAllowed(true);

    // add dagger-injected options
    commandLine.addMixin("Dagger Options", daggerOptions);

    // add sub commands here
    commandLine.registerConverter(Address.class, Address::fromHexString);
    commandLine.registerConverter(Bytes.class, Bytes::fromHexString);
    commandLine.registerConverter(Wei.class, arg -> Wei.of(Long.parseUnsignedLong(arg)));

    // change negation regexp so --nomemory works.  See
    // https://picocli.info/#_customizing_negatable_options
    commandLine.setNegatableOptionTransformer(
        new CommandLine.RegexTransformer.Builder()
            .addPattern("^--no(\\w(-|\\w)*)$", "--$1", "--[no]$1")
            .addPattern("^--trace.no(\\w(-|\\w)*)$", "--trace.$1", "--trace.[no]$1")
            .addPattern("^--(\\w(-|\\w)*)$", "--no$1", "--[no]$1")
            .addPattern("^--trace.(\\w(-|\\w)*)$", "--trace.no$1", "--trace.[no]$1")
            .build());

    // Enumerate forks to support execution-spec-tests
    addForkHelp(commandLine.getSubcommands().get("t8n"));
    addForkHelp(commandLine.getSubcommands().get("t8n-server"));

    commandLine.setExecutionStrategy(new CommandLine.RunLast());
    commandLine.execute(args);
  }
Constructor for the EvmToolCommand class with custom input and output streams.

@param in The input stream to be used.
@param out The output stream to be used.
ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/EvmToolCommand.java