private String censorBindingHash(String s) {
        StringBuilder b = new StringBuilder();
        boolean areInHash = false;
        for (int i = 0; i < s.length() ; i++) {
            char current = s.charAt(i);

            if ( ! Character.isLetterOrDigit(current)) // end of hash
                areInHash = false;

            if ( ! areInHash)
                b.append(current);

            if (current == '@') // start of hash
                areInHash = true;
        }
        return b.toString();
    }
Expression evaluation has no stack so function arguments are bound at config time creating a separate version of
each function for each binding, using hashes to name the bound variants of the function.
This method censors those hashes for string comparison.
config-model/src/test/java/com/yahoo/schema/RankingExpressionInliningTestCase.java