code: private void processFunctions(String name, String text, String type,
        List<MtasCRMParserFunctionOutput> functionOutputList) {
      if (functions.containsKey(type) && functions.get(type).containsKey(name)
          && text != null) {
        MtasCRMParserFunction function = functions.get(type).get(name);
        String[] value;
        if (function.split != null) {
          value = text.split(Pattern.quote(function.split));
        } else {
          value = new String[] { text };
        }
        for (int c = 0; c < value.length; c++) {
          boolean checkedEmpty = false;
          if (value[c].equals("")) {
            checkedEmpty = true;
          }
          if (function.output.containsKey(value[c])) {
            ArrayList<MtasCRMParserFunctionOutput> list = function.output
                .get(value[c]);
            for (MtasCRMParserFunctionOutput listItem : list) {
              functionOutputList.add(listItem.create(value[c]));
            }
          }
          if (!checkedEmpty && function.output.containsKey("")) {
            ArrayList<MtasCRMParserFunctionOutput> list = function.output.get("");
            for (MtasCRMParserFunctionOutput listItem : list) {
              functionOutputList.add(listItem.create(value[c]));
            }
          }
        }
      }
    }
docs: Process functions.
  
  @param name the name
  @param text the text
  @param type the type
  @param functionOutputList the function output list