sclass CCI_SingleChar extends CharacterClassIterator { char c; CharacterClassIterator next; *() {} *(char *c, CharacterClassIterator *next) {} // no check because of method contract CharacterClassIterator acceptChar(char c) { ret next == null ? new CCI_End : next; } bool canEndHere() { false; } bool canAcceptChar(char x) { ret x == c; } Cl acceptedChars() { ret ll(c); } CharRange acceptedCharRange() { ret singletonCharRange(c); } CharacterClassIterator cloneCCI() { this; } }