class StringUtil {

    private StringUtil() {}

    /**
     * Returns the specified words separated with commas and the word 'and' as
     * appropriate.
     *
     * @param words  the words to join
     * @return       the human-readable joined string
     */
    public static String commaAnd(String... words) {<FILL_FUNCTION_BODY>}

    private static String joinWordsWithAnd(String[] words) {
        final StringJoiner join = new StringJoiner(", ", "", " and ");
        for (int i = 0; i < words.length - 1; i++) {
            join.add(words[i]);
        }
        return join.toString() + words[words.length - 1];
    }

}

        switch (words.length) {
            case 0: return "";
            case 1: return words[0];
            case 2: return words[0] + " and " + words[1];
            default:
                return joinWordsWithAnd(words);
        }
    
<no_super_class>