docs: public static String[] getArgs(final String patternString, final String sourceString, final String[] keywordPrecedence) {
  
          log.debug("Util getArgs String[] with pattern: " + patternString + " and sourceStr: "
                  + sourceString);
  
          String[] rtn = null;
  
          ArrayList<String> argsList = null;
  
          String patternCopy = new String(patternString);
          if (keywordPrecedence != null && StringUtils.startsWithAny(patternString, keywordPrecedence)){
              //
              for (String s : keywordPrecedence){
  
  
                  patternCopy = StringUtils.removeStart(patternCopy, s);
              }
  
              patternCopy = "(?:" + StringUtils.join(keywordPrecedence, "|") + ")" + patternCopy;
          }
  
  
          final Pattern pattern = Pattern.compile(patternCopy);
          final Matcher matcher = pattern.matcher(sourceString);
  
          final int groupCount = matcher.groupCount();
  
          // TODO - this doesn't work if we're not doing strict matching
          if (matcher.find()) {
  
              for (int i = 1; i <= groupCount; i++) {
                  final String arg = matcher.group(i);
  
                  if (arg != null) {
                      if (argsList == null) {
                          argsList = new ArrayList<String>();
                      }
                      argsList.add(arg);
                  }
              }
          }
  
          if (argsList != null) {
              rtn = argsList.toArray(new String[argsList.size()]);
  
              if (log.isDebugEnabled()) {
  
                  final StringBuilder buf = new StringBuilder();
                  buf.append("returning args: ");
  
                  for (final String s : argsList) {
  
                      buf.append("[").append(s).append("] ");
                  }
  
                  log.debug(buf.toString());
              }
  
          }
  
          return rtn;
      }