container-common/src/main/java/com/streamsets/datacollector/el/ELEvaluator.java
private void registerFunction(ElFunctionDefinition function) {
    String namespace;
    String functionName;
    if (function.getName().contains(":")) {
      String[] tokens = function.getName().split(":");
      namespace = tokens[0];
      functionName = tokens[1];
    } else {
      namespace = "";
      functionName = function.getName();
    }

    Map<String, Method> namespaceFunctions = functionsByNamespace.get(namespace);
    if (namespaceFunctions == null) {
      namespaceFunctions = new HashMap<>();
      functionsByNamespace.put(namespace, namespaceFunctions);
    }
    namespaceFunctions.put(functionName, function.getMethod());
  }
private void registerFunction(ElFunctionDefinition function) {
    String namespace;
    String functionName;
    if (function.getName().contains(":")) {
      String[] tokens = function.getName().split(":");
      namespace = tokens[0];
      functionName = tokens[1];
    } else {
      namespace = "";
      functionName = function.getName();
    }

    Map<String, Method> namespaceFunctions = functionsByNamespace.get(namespace);
    if (namespaceFunctions == null) {
      namespaceFunctions = new HashMap<>();
      functionsByNamespace.put(namespace, namespaceFunctions);
    }
    namespaceFunctions.put(functionName, function.getMethod());
  }
stuff a function into the namespace/name dual level map structure