protected static String substringBefore(String str, String separator) {
        if (isEmpty(str) || separator == null) {
            return null;
        }

        if (separator.length() == 0) {
            return "";
        }

        int separatorIndex = str.indexOf(separator);
        if (separatorIndex == -1) {
            return str;
        }
        return str.substring(0, separatorIndex);
    }