code: private static OptionParser getParser() {
          OptionParser parser = new OptionParser();
          parser.accepts("help", "print help information");
          parser.accepts("url", "[REQUIRED] bootstrap URL")
                .withRequiredArg()
                .describedAs("bootstrap-url")
                .ofType(String.class);
          parser.accepts("in-dir",
                         "[REQUIRED] Directory in which to find the input key files (named \"{storeName}.kvs\", generated by KeyFetcherCLI.")
                .withRequiredArg()
                .describedAs("inputDirectory")
                .ofType(String.class);
          parser.accepts("out-dir",
                         "[REQUIRED] Directory in which to output the key files (named \"{storeName}.kvs\".")
                .withRequiredArg()
                .describedAs("outputDirectory")
                .ofType(String.class);
          parser.accepts("store-names",
                         "Store names to sample. Comma delimited list or singleton. [Default: ALL]")
                .withRequiredArg()
                .describedAs("storeNames")
                .withValuesSeparatedBy(',')
                .ofType(String.class);
          parser.accepts("parallelism",
                         "Number of key-versions to sample in parallel. [Default: "
                                 + DEFAULT_KEY_PARALLELISM + " ]")
                .withRequiredArg()
                .describedAs("storeParallelism")
                .ofType(Integer.class);
          parser.accepts("progress-period-ops",
                         "Number of operations between progress info is displayed. [Default: "
                                 + DEFAULT_PROGRESS_PERIOD_OPS + " ]")
                .withRequiredArg()
                .describedAs("progressPeriodOps")
                .ofType(Integer.class);
          parser.accepts("output-batch-size",
                         "Number of keys fetched and written out in sorted order at once. [Default: "
                                 + DEFAULT_OUTPUT_BATCH_SIZE + " ]")
                .withRequiredArg()
                .describedAs("outputBatchSize")
                .ofType(Integer.class);
          parser.accepts("details",
                         "print details of each key-version: partition ID, node ID, & hostname");
          return parser;
      }
docs: Return args parser
  
  @return program parser