class CommandLineArgs {

  public CommandLineArgs remove(String... args) {
    Map<String, String> copy = new HashMap<>(dashArgs);
    for (String arg : args) {
      copy.remove(arg);
    }
    return new CommandLineArgs(copy, normalArgs) {
      @Override
      protected void parseArguments(String[] args) {
        throw new IllegalStateException();
      }
      
    };
  }

  protected  CommandLineArgs(String[] args);
  protected  CommandLineArgs(Map<String, String> dashedArgs, List normalArgs);

}