@Override
    public SplitPatternTokenizer clone() {
        try {
            SplitPatternTokenizer copy = (SplitPatternTokenizer) super.clone();
            copy.postConfig(); //ready is set in postConfig.
            return copy;
        } catch (CloneNotSupportedException e) {
            throw new AssertionError("SplitPatternTokenizer is Cloneable, but the clone call failed.");
        }
    }
@Test
    public void testClone() {
        SplitPatternTokenizer tokenizer = new SplitPatternTokenizer();
        testClones(tokenizer, "1.0n", "1.0n");
        testClones(tokenizer, "1. 0n", "1", "0n");
        testClones(tokenizer, "a .10n", "a", ".10n");
        testClones(tokenizer, "a ,10n", "a", ",10n");
        testClones(tokenizer, "a, b, and c", "a", "b", "and", "c");

        tokenizer = new SplitPatternTokenizer("\\s+");
        testClones(tokenizer, "a   b c", "a", "b", "c");
        testClones(tokenizer, "");
        testClones(tokenizer, "    ");
        testClones(tokenizer, "    a", "a");
        testClones(tokenizer, "hello there!", "hello", "there!");
    }