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("out-dir",
                         "[REQUIRED] Directory in which to output the key files (named \"{storeName}.keys\".")
                .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("partition-ids",
                         "Partition IDs to sample for each store. Comma delimited list or singleton. [Default: ALL]")
                .withRequiredArg()
                .describedAs("partitionIds")
                .withValuesSeparatedBy(',')
                .ofType(Integer.class);
          parser.accepts("parallelism",
                         "Number of nodes to sample in parallel. [Default: "
                                 + DEFAULT_NODE_PARALLELISM + " ]")
                .withRequiredArg()
                .describedAs("storeParallelism")
                .ofType(Integer.class);
          parser.accepts("records-per-partition",
                         "Number of keys sampled per partition. [Default: INF]")
                .withRequiredArg()
                .describedAs("recordsPerPartition")
                .ofType(Integer.class);
          parser.accepts("keys-per-second-limit",
                         "Number of keys sampled per second limit. [Default: "
                                 + DEFAULT_KEYS_PER_SECOND_LIMIT + " ]")
                .withRequiredArg()
                .describedAs("keysPerSecondLimit")
                .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);
          return parser;
      }
docs: Return args parser
  
  @return program parser