throw new REException("Unicode block is not supported yet", REException.REG_ESCAPE, 0);
try { name = name.substring(2); Character.UnicodeBlock block = Character.UnicodeBlock.forName(name); return new UnicodeBlockHandler(block); } catch (IllegalArgumentException e) { throw new REException("Invalid Unicode block name: " + name, REException.REG_ESCAPE, 0); }
  private Handler getHandler(String name) throws REException {      if (name.equals("Lower") ||          name.equals("Upper") ||          // name.equals("ASCII") ||          name.equals("Alpha") ||          name.equals("Digit") ||          name.equals("Alnum") ||          name.equals("Punct") ||          name.equals("Graph") ||          name.equals("Print") ||          name.equals("Blank") ||          name.equals("Cntrl") ||          name.equals("XDigit") ||          name.equals("Space") ) {         return new POSIXHandler(name);      }      if (name.startsWith("In")) {          throw new REException("Unicode block is not supported yet", REException.REG_ESCAPE, 0);       }      if (name.startsWith("Is")) {          name = name.substring(2);      }      // "grouped properties"      if (name.equals("L"))	  return new UnicodeCategoriesHandler(LETTER);      if (name.equals("M"))	  return new UnicodeCategoriesHandler(MARK);      if (name.equals("Z"))	  return new UnicodeCategoriesHandler(SEPARATOR);      if (name.equals("S"))	  return new UnicodeCategoriesHandler(SYMBOL);      if (name.equals("N"))	  return new UnicodeCategoriesHandler(NUMBER);      if (name.equals("P"))	  return new UnicodeCategoriesHandler(PUNCTUATION);      if (name.equals("C"))	  return new UnicodeCategoriesHandler(OTHER);      if (name.equals("Mc"))          return new UnicodeCategoryHandler(Character.COMBINING_SPACING_MARK);      if (name.equals("Pc"))          return new UnicodeCategoryHandler(Character.CONNECTOR_PUNCTUATION);      if (name.equals("Cc"))          return new UnicodeCategoryHandler(Character.CONTROL);      if (name.equals("Sc"))          return new UnicodeCategoryHandler(Character.CURRENCY_SYMBOL);      if (name.equals("Pd"))          return new UnicodeCategoryHandler(Character.DASH_PUNCTUATION);      if (name.equals("Nd"))          return new UnicodeCategoryHandler(Character.DECIMAL_DIGIT_NUMBER);      if (name.equals("Me"))          return new UnicodeCategoryHandler(Character.ENCLOSING_MARK);      if (name.equals("Pe"))          return new UnicodeCategoryHandler(Character.END_PUNCTUATION);      if (name.equals("Pf"))          return new UnicodeCategoryHandler(Character.FINAL_QUOTE_PUNCTUATION);      if (name.equals("Cf"))          return new UnicodeCategoryHandler(Character.FORMAT);      if (name.equals("Pi"))          return new UnicodeCategoryHandler(Character.INITIAL_QUOTE_PUNCTUATION);      if (name.equals("Nl"))          return new UnicodeCategoryHandler(Character.LETTER_NUMBER);      if (name.equals("Zl"))          return new UnicodeCategoryHandler(Character.LINE_SEPARATOR);      if (name.equals("Ll"))          return new UnicodeCategoryHandler(Character.LOWERCASE_LETTER);      if (name.equals("Sm"))          return new UnicodeCategoryHandler(Character.MATH_SYMBOL);      if (name.equals("Lm"))          return new UnicodeCategoryHandler(Character.MODIFIER_LETTER);      if (name.equals("Sk"))          return new UnicodeCategoryHandler(Character.MODIFIER_SYMBOL);      if (name.equals("Mn"))          return new UnicodeCategoryHandler(Character.NON_SPACING_MARK);      if (name.equals("Lo"))          return new UnicodeCategoryHandler(Character.OTHER_LETTER);      if (name.equals("No"))          return new UnicodeCategoryHandler(Character.OTHER_NUMBER);      if (name.equals("Po"))          return new UnicodeCategoryHandler(Character.OTHER_PUNCTUATION);      if (name.equals("So"))          return new UnicodeCategoryHandler(Character.OTHER_SYMBOL);      if (name.equals("Zp"))          return new UnicodeCategoryHandler(Character.PARAGRAPH_SEPARATOR);      if (name.equals("Co"))          return new UnicodeCategoryHandler(Character.PRIVATE_USE);      if (name.equals("Zs"))          return new UnicodeCategoryHandler(Character.SPACE_SEPARATOR);      if (name.equals("Ps"))          return new UnicodeCategoryHandler(Character.START_PUNCTUATION);      if (name.equals("Cs"))          return new UnicodeCategoryHandler(Character.SURROGATE);      if (name.equals("Lt"))          return new UnicodeCategoryHandler(Character.TITLECASE_LETTER);      if (name.equals("Cn"))          return new UnicodeCategoryHandler(Character.UNASSIGNED);      if (name.equals("Lu"))          return new UnicodeCategoryHandler(Character.UPPERCASE_LETTER);      throw new REException("unsupported name " + name, REException.REG_ESCAPE, 0);  }