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<Char> acceptedChars() { ret ll(c); }

  CharRange acceptedCharRange() {
    ret singletonCharRange(c);
  }
  
  CharacterClassIterator cloneCCI() {
    this;
  }
}