docs: private String decodeAndUpdateWithVariables(String[] splitList,
        Map<String, Map<String, String>> variables) throws MtasParserException {
      StringBuilder builder = new StringBuilder();
      for (String split : splitList) {
        if (split.contains(":")) {
          String[] subSplit = split.split(":");
          if (subSplit.length == 2) {
            String decodedVariableName = new String(dec.decode(subSplit[0]),
                StandardCharsets.UTF_8);
            String decodedVariableValue = new String(dec.decode(subSplit[1]),
                StandardCharsets.UTF_8);
            if (variables.containsKey(decodedVariableName)) {
              if (variables.get(decodedVariableName)
                  .containsKey(decodedVariableValue)) {
                String valueFromVariable = variables.get(decodedVariableName)
                    .get(decodedVariableValue);
                builder.append(valueFromVariable);
              } else {
                throw new MtasParserException("id " + decodedVariableValue
                    + " not found in " + decodedVariableName);
              }
            } else {
              throw new MtasParserException(
                  "variable " + decodedVariableName + " unknown");
            }
          }
        } else {
          try {
            builder.append(new String(dec.decode(split), StandardCharsets.UTF_8));
          } catch (IllegalArgumentException e) {
            log.info(e);
          }
        }
      }
      return builder.toString();
    }