Expression first = getParameter(function, 0, true);
Expression second = getParameter(function, 1, true);
// would be a simple call, but strIndexOf returns zero based indices
out.write("(locate(");
second.accept(this, String.class);
out.write(", ");
first.accept(this, String.class);
out.write(") - 1)");
} else if (function instanceof FilterFunction_strSubstring) {
Expression string = getParameter(function, 0, true);