public static ProcessEntryPoint createForArguments(String[] args) {
   Props props = ConfigurationUtils.loadPropsFromCommandLineArgs(args);
   ProcessCommands commands =
       new DefaultProcessCommands(
           props.nonNullValueAsFile(PROPERTY_SHARED_PATH),
           Integer.parseInt(props.nonNullValue(PROPERTY_PROCESS_INDEX)));
   return new ProcessEntryPoint(props, new SystemExit(), commands);
 }
 @Override
 public void stopAsync() {
   if (lifecycle.tryToMoveTo(Lifecycle.State.STOPPING)) {
     stopperThread =
         new StopperThread(
             monitored,
             commands,
             Long.parseLong(props.nonNullValue(PROPERTY_TERMINATION_TIMEOUT)));
     stopperThread.start();
     stopWatcher.stopWatching();
   }
 }
 public String getKey() {
   return props.nonNullValue(PROPERTY_PROCESS_KEY);
 }