code: protected void setProcessName(String newProcessName) {
          if (newProcessName == null) {
              processName = getDefaultProcessName();
              return;
          } else if (!newProcessName.matches("[\\p{L}\\p{N}\\+\\_][\\p{L}\\p{N}\\-\\+\\.\\_]*")) {
              // Translation of the above regex for the faint of heart:
              // The first character can be a +, an _, a unicode letter \p{L}, or a unicode number \\p{N}
              // Subsequent characters can be any of the above, in addition to a . and a -
              throw new LocationException("Bad server name: " + newProcessName, MessageFormat.format(BootstrapConstants.messages.getString(getErrorProcessNameCharacterMessageKey()),
                                                                                                     newProcessName));
          } else
              // use the new server name
              processName = newProcessName;
      }
docs: A process (server/client) name must be specified on the command line.
  It must be looked for (and set as a member variable) before we calculate locations.
  
  This method looks at the provided process name, if it is not null it checks to make
  sure the provided process name contains only valid characters. If the process name is
  specified and uses valid characters, it will be used as the process name, if it contains
  invalid characters, an exception will be thrown preventing the process from starting.
  
  If no process name was specified, "defaultServer" or "defaultClient" will be used.
  
  @param newProcessName A process name being used.