static function __static()
 {
     self::$ALNUM = new self(new Scanner('%[a-zA-Z0-9]'));
     self::$WORD = new self(new Scanner('%[a-zA-Z0-9_]'));
     self::$ALPHA = new self(new Scanner('%[a-zA-Z]'));
     self::$BLANK = new self(new Scanner("%[\t ]"));
     self::$CNTRL = new self(new Scanner("%[-]"));
     self::$DIGIT = new self(new Scanner('%[0-9]'));
     self::$GRAPH = new self(new Scanner("%[!-~]"));
     self::$LOWER = new self(new Scanner('%[a-z]'));
     self::$PRINT = new self(new Scanner("%[ -~]"));
     self::$PUNCT = new self(new Scanner('%[]!"#$%&\'()*+,./:;<=>?@[^_`{|}~-]'));
     self::$SPACE = new self(new Scanner("%[ \t\r\n\v\f]"));
     self::$UPPER = new self(new Scanner('%[A-Z]'));
     self::$XDIGIT = new self(new Scanner('%[0-9a-fA-F]'));
 }
 public function addClass(CharacterClass $class)
 {
     $this->classes[$class->getName()] = $class;
     return $this;
 }