[jruby-joni] 33/279: Apply joni changes after encoding framework extraction and update the version to 1.1.0.

Hideki Yamane henrich at moszumanska.debian.org
Mon Nov 16 11:26:36 UTC 2015


This is an automated email from the git hooks/post-receive script.

henrich pushed a commit to branch debian/sid
in repository jruby-joni.

commit 21286060977f71ae5667cad10aac6bff483c8064
Author: Marcin Mielżyński <lopx at gazeta.pl>
Date:   Mon Sep 1 22:08:48 2008 +0000

    Apply joni changes after encoding framework extraction and update the version to 1.1.0.
    
    git-svn-id: http://svn.codehaus.org/jruby/joni/trunk@7629 961051c9-f516-0410-bf72-c9f7e237a7b7
---
 MANIFEST.MF                                        |    2 +-
 pom.xml                                            |    7 +-
 src/org/joni/Analyser.java                         |    3 +-
 src/org/joni/ApplyAllCaseFoldFunction.java         |   25 -
 src/org/joni/ApplyCaseFold.java                    |    3 +-
 src/org/joni/ArrayCompiler.java                    |    2 +-
 src/org/joni/ByteCodeMachine.java                  |    8 +-
 src/org/joni/ByteCodePrinter.java                  |    3 +-
 src/org/joni/CaseFoldCodeItem.java                 |   34 -
 src/org/joni/CodeRangeBuffer.java                  |   35 +-
 src/org/joni/CompileInfo.java                      |   31 -
 src/org/joni/Compiler.java                         |    2 +-
 src/org/joni/Config.java                           |   37 +-
 src/org/joni/ErrorInfo.java                        |   28 -
 src/org/joni/IntHolder.java                        |   25 -
 src/org/joni/Lexer.java                            |    5 +-
 src/org/joni/Matcher.java                          |    3 +-
 src/org/joni/NodeOptInfo.java                      |    2 +-
 src/org/joni/OptEnvironment.java                   |    2 +-
 src/org/joni/OptExactInfo.java                     |    2 +-
 src/org/joni/OptMapInfo.java                       |    3 +-
 src/org/joni/Parser.java                           |    4 +-
 src/org/joni/Regex.java                            |    4 +-
 src/org/joni/ScanEnvironment.java                  |    2 +-
 src/org/joni/ScannerSupport.java                   |    3 +-
 src/org/joni/SearchAlgorithm.java                  |    3 +-
 src/org/joni/StackMachine.java                     |    2 +-
 src/org/joni/ast/CClassNode.java                   |   12 +-
 src/org/joni/ast/StringNode.java                   |    2 +-
 src/org/joni/bench/AbstractBench.java              |    6 +-
 src/org/joni/constants/CharacterType.java          |   57 -
 src/org/joni/constants/PosixBracket.java           |   83 -
 src/org/joni/encoding/AbstractEncoding.java        |  218 -
 src/org/joni/encoding/CanBeTrailTableEncoding.java |   55 -
 src/org/joni/encoding/CaseFoldMapEncoding.java     |  129 -
 src/org/joni/encoding/Encoding.java                |  482 ---
 src/org/joni/encoding/EucEncoding.java             |   49 -
 src/org/joni/encoding/ISOEncoding.java             |   58 -
 src/org/joni/encoding/MultiByteEncoding.java       |  212 -
 src/org/joni/encoding/SingleByteEncoding.java      |  103 -
 src/org/joni/encoding/specific/ASCIIEncoding.java  |   83 -
 src/org/joni/encoding/specific/BIG5Encoding.java   |  154 -
 src/org/joni/encoding/specific/CP1251Encoding.java |  160 -
 src/org/joni/encoding/specific/CP949Encoding.java  |  154 -
 src/org/joni/encoding/specific/EUCJPEncoding.java  |  253 --
 src/org/joni/encoding/specific/EUCKREncoding.java  |  146 -
 src/org/joni/encoding/specific/EUCTWEncoding.java  |  186 -
 .../joni/encoding/specific/EmacsMuleEncoding.java  |  267 --
 .../joni/encoding/specific/GB18030Encoding.java    |  516 ---
 src/org/joni/encoding/specific/GBKEncoding.java    |  154 -
 .../joni/encoding/specific/ISO8859_10Encoding.java |  155 -
 .../joni/encoding/specific/ISO8859_11Encoding.java |   94 -
 .../joni/encoding/specific/ISO8859_13Encoding.java |  140 -
 .../joni/encoding/specific/ISO8859_14Encoding.java |  156 -
 .../joni/encoding/specific/ISO8859_15Encoding.java |  146 -
 .../joni/encoding/specific/ISO8859_16Encoding.java |  153 -
 .../joni/encoding/specific/ISO8859_1Encoding.java  |  233 --
 .../joni/encoding/specific/ISO8859_2Encoding.java  |  151 -
 .../joni/encoding/specific/ISO8859_3Encoding.java  |  147 -
 .../joni/encoding/specific/ISO8859_4Encoding.java  |  150 -
 .../joni/encoding/specific/ISO8859_5Encoding.java  |  171 -
 .../joni/encoding/specific/ISO8859_6Encoding.java  |   94 -
 .../joni/encoding/specific/ISO8859_7Encoding.java  |  159 -
 .../joni/encoding/specific/ISO8859_8Encoding.java  |   94 -
 .../joni/encoding/specific/ISO8859_9Encoding.java  |  140 -
 src/org/joni/encoding/specific/KOI8Encoding.java   |  200 -
 src/org/joni/encoding/specific/KOI8REncoding.java  |  160 -
 src/org/joni/encoding/specific/KOI8UEncoding.java  |  164 -
 src/org/joni/encoding/specific/SJISEncoding.java   |  230 --
 .../joni/encoding/specific/UTF16BEEncoding.java    |  218 -
 .../joni/encoding/specific/UTF16LEEncoding.java    |  201 -
 .../joni/encoding/specific/UTF32BEEncoding.java    |  138 -
 .../joni/encoding/specific/UTF32LEEncoding.java    |  136 -
 src/org/joni/encoding/specific/UTF8Encoding.java   |  409 --
 .../joni/encoding/unicode/UnicodeCTypeNames.java   |  173 -
 .../joni/encoding/unicode/UnicodeCaseFolds.java    | 3847 ------------------
 .../joni/encoding/unicode/UnicodeCodeRanges.java   | 3522 ----------------
 src/org/joni/encoding/unicode/UnicodeEncoding.java |  439 --
 .../joni/encoding/unicode/UnicodeProperties.java   | 4272 --------------------
 .../encoding/unicode/UnicodePropertiesScripts.java |  868 ----
 src/org/joni/exception/ErrorMessages.java          |   10 +-
 .../joni/exception/IllegalCharacterException.java  |   27 -
 src/org/joni/exception/StandardException.java      |   28 -
 src/org/joni/util/ArrayCopy.java                   |   53 -
 src/org/joni/util/BytesHash.java                   |  134 -
 src/org/joni/util/Hash.java                        |  180 -
 src/org/joni/util/IntArrayHash.java                |  126 -
 src/org/joni/util/IntHash.java                     |   95 -
 src/org/joni/util/ObjHash.java                     |   99 -
 test/org/joni/test/Test.java                       |    2 +-
 test/org/joni/test/TestA.java                      |    4 +-
 test/org/joni/test/TestC.java                      |    4 +-
 test/org/joni/test/TestCornerCases.java            |    4 +-
 test/org/joni/test/TestCrnl.java                   |    4 +-
 test/org/joni/test/TestU.java                      |    4 +-
 95 files changed, 66 insertions(+), 21687 deletions(-)

diff --git a/MANIFEST.MF b/MANIFEST.MF
index 063fabb..df307e8 100644
--- a/MANIFEST.MF
+++ b/MANIFEST.MF
@@ -1,2 +1,2 @@
 Implementation-Title: Joni (java port of Oniguruma)
-Implementation-Version: 0.1.1
+Implementation-Version: 1.1.0
diff --git a/pom.xml b/pom.xml
index 4cf3fb1..42d387f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
   <groupId>org.jruby.joni</groupId>
   <artifactId>joni</artifactId>
   <packaging>jar</packaging>
-  <version>1.0.3</version>
+  <version>1.1.0</version>
   <name>Joni</name>
   <description>
     Java port of Oniguruma: http://www.geocities.jp/kosako3/oniguruma
@@ -73,6 +73,11 @@
 
   <dependencies>
     <dependency>
+       <groupId>org.jruby.jcodings</groupId>
+       <artifactId>jcodings</artifactId>
+       <version>1.0.0</version>
+    </dependency>
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>3.8.1</version>
diff --git a/src/org/joni/Analyser.java b/src/org/joni/Analyser.java
index 051c932..3bbf860 100644
--- a/src/org/joni/Analyser.java
+++ b/src/org/joni/Analyser.java
@@ -34,6 +34,8 @@ import static org.joni.ast.QuantifierNode.isRepeatInfinite;
 
 import java.util.HashSet;
 
+import org.jcodings.CaseFoldCodeItem;
+import org.jcodings.constants.CharacterType;
 import org.joni.ast.AnchorNode;
 import org.joni.ast.BackRefNode;
 import org.joni.ast.CClassNode;
@@ -45,7 +47,6 @@ import org.joni.ast.Node;
 import org.joni.ast.QuantifierNode;
 import org.joni.ast.StringNode;
 import org.joni.constants.AnchorType;
-import org.joni.constants.CharacterType;
 import org.joni.constants.EncloseType;
 import org.joni.constants.NodeType;
 import org.joni.constants.RegexState;
diff --git a/src/org/joni/ApplyAllCaseFoldFunction.java b/src/org/joni/ApplyAllCaseFoldFunction.java
deleted file mode 100644
index f5ce266..0000000
--- a/src/org/joni/ApplyAllCaseFoldFunction.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni;
-
-public interface ApplyAllCaseFoldFunction {
-    public void apply(int from, int[]to, int toLength, Object o);
-}
-
diff --git a/src/org/joni/ApplyCaseFold.java b/src/org/joni/ApplyCaseFold.java
index 6fc436b..54a1aa0 100644
--- a/src/org/joni/ApplyCaseFold.java
+++ b/src/org/joni/ApplyCaseFold.java
@@ -19,10 +19,11 @@
  */
 package org.joni;
 
+import org.jcodings.ApplyAllCaseFoldFunction;
+import org.jcodings.Encoding;
 import org.joni.ast.CClassNode;
 import org.joni.ast.ConsAltNode;
 import org.joni.ast.StringNode;
-import org.joni.encoding.Encoding;
 
 final class ApplyCaseFold implements ApplyAllCaseFoldFunction {
 
diff --git a/src/org/joni/ArrayCompiler.java b/src/org/joni/ArrayCompiler.java
index b9332bc..f23ce58 100644
--- a/src/org/joni/ArrayCompiler.java
+++ b/src/org/joni/ArrayCompiler.java
@@ -25,6 +25,7 @@ import static org.joni.Option.isIgnoreCase;
 import static org.joni.Option.isMultiline;
 import static org.joni.ast.QuantifierNode.isRepeatInfinite;
 
+import org.jcodings.constants.CharacterType;
 import org.joni.ast.AnchorNode;
 import org.joni.ast.BackRefNode;
 import org.joni.ast.CClassNode;
@@ -36,7 +37,6 @@ import org.joni.ast.Node;
 import org.joni.ast.QuantifierNode;
 import org.joni.ast.StringNode;
 import org.joni.constants.AnchorType;
-import org.joni.constants.CharacterType;
 import org.joni.constants.EncloseType;
 import org.joni.constants.NodeType;
 import org.joni.constants.OPCode;
diff --git a/src/org/joni/ByteCodeMachine.java b/src/org/joni/ByteCodeMachine.java
index ce03ba9..5d74a15 100644
--- a/src/org/joni/ByteCodeMachine.java
+++ b/src/org/joni/ByteCodeMachine.java
@@ -27,10 +27,12 @@ import static org.joni.Option.isNotBol;
 import static org.joni.Option.isNotEol;
 import static org.joni.Option.isPosixRegion;
 
+import org.jcodings.CodeRange;
+import org.jcodings.Encoding;
+import org.jcodings.IntHolder;
 import org.joni.ast.CClassNode;
 import org.joni.constants.OPCode;
 import org.joni.constants.OPSize;
-import org.joni.encoding.Encoding;
 import org.joni.exception.ErrorMessages;
 import org.joni.exception.InternalException;
 
@@ -640,7 +642,7 @@ class ByteCodeMachine extends StackMachine {
         int ss = s;
         s += mbLen;
         int c = enc.mbcToCode(bytes, ss, s);
-        if (!CodeRangeBuffer.isInCodeRange(code, ip, c)) return false;
+        if (!CodeRange.isInCodeRange(code, ip, c)) return false;
         ip += tlen;
         return true;        
     }
@@ -696,7 +698,7 @@ class ByteCodeMachine extends StackMachine {
         s += mbLen;
         int c = enc.mbcToCode(bytes, ss, s);
         
-        if (CodeRangeBuffer.isInCodeRange(code, ip, c)) return false;
+        if (CodeRange.isInCodeRange(code, ip, c)) return false;
         ip += tlen;
         return true;
     }    
diff --git a/src/org/joni/ByteCodePrinter.java b/src/org/joni/ByteCodePrinter.java
index 1606752..5efb353 100644
--- a/src/org/joni/ByteCodePrinter.java
+++ b/src/org/joni/ByteCodePrinter.java
@@ -19,14 +19,13 @@
  */
 package org.joni;
 
+import org.jcodings.Encoding;
 import org.joni.ast.CClassNode;
 import org.joni.constants.Arguments;
 import org.joni.constants.OPCode;
 import org.joni.constants.OPSize;
-import org.joni.encoding.Encoding;
 import org.joni.exception.InternalException;
 
-
 class ByteCodePrinter {
     int[]code;
     int codeLength;
diff --git a/src/org/joni/CaseFoldCodeItem.java b/src/org/joni/CaseFoldCodeItem.java
deleted file mode 100644
index 615bfbf..0000000
--- a/src/org/joni/CaseFoldCodeItem.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni;
-
-public class CaseFoldCodeItem {
-    static final int ENC_MAX_COMP_CASE_FOLD_CODE_LEN = 3;
-    
-    public final int byteLen;
-    public final int codeLen;
-    public final int code[];
-    
-    public CaseFoldCodeItem(int byteLen, int codeLen, int[]code) {
-        this.byteLen = byteLen;
-        this.codeLen = codeLen;
-        this.code = code;
-    }
-}
diff --git a/src/org/joni/CodeRangeBuffer.java b/src/org/joni/CodeRangeBuffer.java
index f409346..51b77e7 100644
--- a/src/org/joni/CodeRangeBuffer.java
+++ b/src/org/joni/CodeRangeBuffer.java
@@ -19,7 +19,7 @@
  */
 package org.joni;
 
-import org.joni.encoding.Encoding;
+import org.jcodings.Encoding;
 import org.joni.exception.ErrorMessages;
 import org.joni.exception.ValueException;
 
@@ -377,37 +377,4 @@ public final class CodeRangeBuffer {
 
         return pbuf;
     }
-    
-    public static boolean isInCodeRange(int[]p, int code) {
-        int low = 0;        
-        int n = p[0];
-        int high = n;
-
-        while (low < high) {
-            int x = (low + high) >> 1;
-            if (code > p[(x << 1) + 2]) {
-                low = x + 1;
-            } else {
-                high = x;
-            }
-        }
-        return low < n && code >= p[(low << 1) + 1];
-    }
-
-    public static boolean isInCodeRange(int[]p, int offset, int code) {
-        int low = 0;        
-        int n = p[offset];
-        int high = n ;
-
-        while (low < high) {
-            int x = (low + high) >> 1;
-            if (code > p[(x << 1) + 2 + offset]) {
-                low = x + 1;
-            } else {
-                high = x;
-            }
-        }
-        return low < n && code >= p[(low << 1) + 1 + offset];        
-    }    
-    
 }
diff --git a/src/org/joni/CompileInfo.java b/src/org/joni/CompileInfo.java
deleted file mode 100644
index 53cf83f..0000000
--- a/src/org/joni/CompileInfo.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni;
-
-import org.joni.encoding.Encoding;
-
-public class CompileInfo {
-    int elements;
-    Encoding patternEnc;
-    Encoding targetEnd;
-    Syntax syntax;
-    int option;
-    int caseFoldFlag;
-}
diff --git a/src/org/joni/Compiler.java b/src/org/joni/Compiler.java
index b31b205..c9ea261 100644
--- a/src/org/joni/Compiler.java
+++ b/src/org/joni/Compiler.java
@@ -19,6 +19,7 @@
  */
 package org.joni;
 
+import org.jcodings.Encoding;
 import org.joni.ast.AnchorNode;
 import org.joni.ast.BackRefNode;
 import org.joni.ast.CClassNode;
@@ -30,7 +31,6 @@ import org.joni.ast.Node;
 import org.joni.ast.QuantifierNode;
 import org.joni.ast.StringNode;
 import org.joni.constants.NodeType;
-import org.joni.encoding.Encoding;
 import org.joni.exception.ErrorMessages;
 import org.joni.exception.InternalException;
 import org.joni.exception.SyntaxException;
diff --git a/src/org/joni/Config.java b/src/org/joni/Config.java
index 10e0c44..d4ed9b3 100644
--- a/src/org/joni/Config.java
+++ b/src/org/joni/Config.java
@@ -21,12 +21,9 @@ package org.joni;
 
 import java.io.PrintStream;
 
-public interface Config {
-    final boolean VANILLA = true;
-
+public interface Config extends org.jcodings.Config {
     final int CHAR_TABLE_SIZE = 256;
     
-    
     final boolean USE_NAMED_GROUP = true;
     final boolean USE_SUBEXP_CALL = true;
     final boolean USE_BACKREF_WITH_LEVEL = true;                            /* \k<name+n>, \k<name-n> */
@@ -45,46 +42,20 @@ public interface Config {
     final boolean USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE = true;
     final boolean USE_COMBINATION_EXPLOSION_CHECK = false;
     
-    
-
-    
-    final int ENC_CASE_FOLD_TURKISH_AZERI = (1<<20);
-    final int INTERNAL_ENC_CASE_FOLD_MULTI_CHAR = (1<<30);
-    final int ENC_CASE_FOLD_MIN = INTERNAL_ENC_CASE_FOLD_MULTI_CHAR;
-    final int ENC_CASE_FOLD_DEFAULT = ENC_CASE_FOLD_MIN;
-    
-    
-    
-    final boolean USE_UNICODE_CASE_FOLD_TURKISH_AZERI = false;
-    final boolean USE_UNICODE_ALL_LINE_TERMINATORS = false;
-    final boolean USE_CRNL_AS_LINE_TERMINATOR = false;
-    
-    final boolean USE_UNICODE_PROPERTIES = false;
-    
-    
     final int NREGION                   = 10;
     final int MAX_BACKREF_NUM           = 1000;
     final int MAX_REPEAT_NUM            = 100000;
     final int MAX_MULTI_BYTE_RANGES_NUM = 10000;
-    
-    
-    
-    
+
+
     final boolean USE_WARN = true;
-    
-    /* work size */
-    final int ENC_CODE_TO_MBC_MAXLEN            = 7;
-    final int ENC_MBC_CASE_FOLD_MAXLEN          = 18;
 
-    final int ENC_MAX_COMP_CASE_FOLD_CODE_LEN   = 3;
-    final int ENC_GET_CASE_FOLD_CODES_MAX_NUM   = 13;       /* 13 => Unicode:0x1ffc */
-    
     // internal config
     final boolean USE_PARSE_TREE_NODE_RECYCLE       = true;
     final boolean USE_OP_PUSH_OR_JUMP_EXACT         = true;
     final boolean USE_SHARED_CCLASS_TABLE			= false;    
     final boolean USE_QTFR_PEEK_NEXT                = true; 
-    
+
     final int INIT_MATCH_STACK_SIZE                 = 64;
     final int DEFAULT_MATCH_STACK_LIMIT_SIZE        = 0;        /* unlimited */
     final int NUMBER_OF_POOLED_STACKS               = 4;
diff --git a/src/org/joni/ErrorInfo.java b/src/org/joni/ErrorInfo.java
deleted file mode 100644
index a243ee0..0000000
--- a/src/org/joni/ErrorInfo.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni;
-
-import org.joni.encoding.Encoding;
-
-public class ErrorInfo {
-    public Encoding encoding;
-    public String par;
-    public String parEnd;
-}
diff --git a/src/org/joni/IntHolder.java b/src/org/joni/IntHolder.java
deleted file mode 100644
index 909ae1e..0000000
--- a/src/org/joni/IntHolder.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-
-package org.joni;
-
-public class IntHolder {
-    public int value;
-}
diff --git a/src/org/joni/Lexer.java b/src/org/joni/Lexer.java
index 3de56df..cd3dad6 100644
--- a/src/org/joni/Lexer.java
+++ b/src/org/joni/Lexer.java
@@ -22,9 +22,10 @@ package org.joni;
 import static org.joni.Option.isSingleline;
 import static org.joni.ast.QuantifierNode.isRepeatInfinite;
 
+import org.jcodings.constants.CharacterType;
+import org.jcodings.exception.CharacterPropertyException;
 import org.joni.ast.QuantifierNode;
 import org.joni.constants.AnchorType;
-import org.joni.constants.CharacterType;
 import org.joni.constants.MetaChar;
 import org.joni.constants.TokenType;
 import org.joni.exception.ErrorMessages;
@@ -1376,7 +1377,7 @@ class Lexer extends ScannerSupport {
             if (c == '}') {
                 return enc.propertyNameToCType(bytes, _p, last);
             } else if (c == '(' || c == ')' || c == '{' || c == '|') {
-                newValueException(ERR_INVALID_CHAR_PROPERTY_NAME, _p, last);
+                throw new CharacterPropertyException(ERR_INVALID_CHAR_PROPERTY_NAME, bytes, _p, last);
             }
         }
         newInternalException(ERR_PARSER_BUG);
diff --git a/src/org/joni/Matcher.java b/src/org/joni/Matcher.java
index 913842b..354622c 100644
--- a/src/org/joni/Matcher.java
+++ b/src/org/joni/Matcher.java
@@ -22,8 +22,9 @@ package org.joni;
 
 import static org.joni.Option.isFindLongest;
 
+import org.jcodings.Encoding;
+import org.jcodings.IntHolder;
 import org.joni.constants.AnchorType;
-import org.joni.encoding.Encoding;
 
 public abstract class Matcher extends IntHolder {
     protected final Regex regex;
diff --git a/src/org/joni/NodeOptInfo.java b/src/org/joni/NodeOptInfo.java
index a8573c2..b0e4026 100644
--- a/src/org/joni/NodeOptInfo.java
+++ b/src/org/joni/NodeOptInfo.java
@@ -19,7 +19,7 @@
  */
 package org.joni;
 
-import org.joni.encoding.Encoding;
+import org.jcodings.Encoding;
 
 public final class NodeOptInfo {
     final MinMaxLen length = new  MinMaxLen();
diff --git a/src/org/joni/OptEnvironment.java b/src/org/joni/OptEnvironment.java
index 3461937..4b59c31 100644
--- a/src/org/joni/OptEnvironment.java
+++ b/src/org/joni/OptEnvironment.java
@@ -19,7 +19,7 @@
  */
 package org.joni;
 
-import org.joni.encoding.Encoding;
+import org.jcodings.Encoding;
 
 // remove this one in future and pass mmd directly
 final class OptEnvironment {
diff --git a/src/org/joni/OptExactInfo.java b/src/org/joni/OptExactInfo.java
index b880de0..45d94fc 100644
--- a/src/org/joni/OptExactInfo.java
+++ b/src/org/joni/OptExactInfo.java
@@ -19,7 +19,7 @@
  */
 package org.joni;
 
-import org.joni.encoding.Encoding;
+import org.jcodings.Encoding;
 
 final class OptExactInfo {
     static final int OPT_EXACT_MAXLEN = 24;
diff --git a/src/org/joni/OptMapInfo.java b/src/org/joni/OptMapInfo.java
index 6950a42..2763b53 100644
--- a/src/org/joni/OptMapInfo.java
+++ b/src/org/joni/OptMapInfo.java
@@ -19,7 +19,8 @@
  */
 package org.joni;
 
-import org.joni.encoding.Encoding;
+import org.jcodings.CaseFoldCodeItem;
+import org.jcodings.Encoding;
 
 final class OptMapInfo {
     
diff --git a/src/org/joni/Parser.java b/src/org/joni/Parser.java
index a53426c..a787d16 100644
--- a/src/org/joni/Parser.java
+++ b/src/org/joni/Parser.java
@@ -24,6 +24,8 @@ import static org.joni.BitStatus.bsOnOff;
 import static org.joni.Option.isDontCaptureGroup;
 import static org.joni.Option.isIgnoreCase;
 
+import org.jcodings.constants.CharacterType;
+import org.jcodings.constants.PosixBracket;
 import org.joni.ast.AnchorNode;
 import org.joni.ast.AnyCharNode;
 import org.joni.ast.BackRefNode;
@@ -39,10 +41,8 @@ import org.joni.ast.CClassNode.CCStateArg;
 import org.joni.constants.AnchorType;
 import org.joni.constants.CCSTATE;
 import org.joni.constants.CCVALTYPE;
-import org.joni.constants.CharacterType;
 import org.joni.constants.EncloseType;
 import org.joni.constants.NodeType;
-import org.joni.constants.PosixBracket;
 import org.joni.constants.TokenType;
 
 class Parser extends Lexer {
diff --git a/src/org/joni/Regex.java b/src/org/joni/Regex.java
index 29034a4..4cb5cb7 100644
--- a/src/org/joni/Regex.java
+++ b/src/org/joni/Regex.java
@@ -26,13 +26,13 @@ import static org.joni.Option.isDontCaptureGroup;
 import java.util.IllegalFormatConversionException;
 import java.util.Iterator;
 
+import org.jcodings.Encoding;
+import org.jcodings.util.BytesHash;
 import org.joni.constants.AnchorType;
 import org.joni.constants.RegexState;
-import org.joni.encoding.Encoding;
 import org.joni.exception.ErrorMessages;
 import org.joni.exception.InternalException;
 import org.joni.exception.ValueException;
-import org.joni.util.BytesHash;
 
 public final class Regex implements RegexState {
     
diff --git a/src/org/joni/ScanEnvironment.java b/src/org/joni/ScanEnvironment.java
index 549e62c..95dd90a 100644
--- a/src/org/joni/ScanEnvironment.java
+++ b/src/org/joni/ScanEnvironment.java
@@ -21,8 +21,8 @@ package org.joni;
 
 import static org.joni.BitStatus.bsClear;
 
+import org.jcodings.Encoding;
 import org.joni.ast.Node;
-import org.joni.encoding.Encoding;
 import org.joni.exception.ErrorMessages;
 import org.joni.exception.InternalException;
 
diff --git a/src/org/joni/ScannerSupport.java b/src/org/joni/ScannerSupport.java
index e4583ef..370d338 100644
--- a/src/org/joni/ScannerSupport.java
+++ b/src/org/joni/ScannerSupport.java
@@ -19,7 +19,8 @@
  */
 package org.joni;
 
-import org.joni.encoding.Encoding;
+import org.jcodings.Encoding;
+import org.jcodings.IntHolder;
 import org.joni.exception.ErrorMessages;
 import org.joni.exception.InternalException;
 import org.joni.exception.SyntaxException;
diff --git a/src/org/joni/SearchAlgorithm.java b/src/org/joni/SearchAlgorithm.java
index f4e09ac..c19591a 100644
--- a/src/org/joni/SearchAlgorithm.java
+++ b/src/org/joni/SearchAlgorithm.java
@@ -1,6 +1,7 @@
 package org.joni;
 
-import org.joni.encoding.Encoding;
+import org.jcodings.Encoding;
+import org.jcodings.IntHolder;
 
 public abstract class SearchAlgorithm {
 
diff --git a/src/org/joni/StackMachine.java b/src/org/joni/StackMachine.java
index 9be72af..c999130 100644
--- a/src/org/joni/StackMachine.java
+++ b/src/org/joni/StackMachine.java
@@ -19,9 +19,9 @@
  */
 package org.joni;
 
-import java.lang.ref.WeakReference;
 import static org.joni.BitStatus.bsAt;
 
+import java.lang.ref.WeakReference;
 import java.util.Arrays;
 
 import org.joni.constants.StackPopLevel;
diff --git a/src/org/joni/ast/CClassNode.java b/src/org/joni/ast/CClassNode.java
index 4ae2264..40c7c90 100644
--- a/src/org/joni/ast/CClassNode.java
+++ b/src/org/joni/ast/CClassNode.java
@@ -19,15 +19,17 @@
  */
 package org.joni.ast;
 
+import org.jcodings.CodeRange;
+import org.jcodings.Encoding;
+import org.jcodings.IntHolder;
+import org.jcodings.constants.CharacterType;
+import org.jcodings.exception.EncodingException;
 import org.joni.BitSet;
 import org.joni.CodeRangeBuffer;
 import org.joni.Config;
-import org.joni.IntHolder;
 import org.joni.ScanEnvironment;
 import org.joni.constants.CCSTATE;
 import org.joni.constants.CCVALTYPE;
-import org.joni.constants.CharacterType;
-import org.joni.encoding.Encoding;
 import org.joni.exception.ErrorMessages;
 import org.joni.exception.InternalException;
 import org.joni.exception.SyntaxException;
@@ -374,7 +376,7 @@ public final class CClassNode extends Node {
                     try {
                         if (enc.codeToMbcLength(c) > 0 && /* check invalid code point */
                                 !enc.isWord(c)) bs.set(c);    
-                    } catch (ValueException ve) {};
+                    } catch (EncodingException ve) {};
                 }
             }
             break;
@@ -478,7 +480,7 @@ public final class CClassNode extends Node {
             if (mbuf == null) {
                 found = false;
             } else {
-                found = CodeRangeBuffer.isInCodeRange(mbuf.getCodeRange(), code);
+                found = CodeRange.isInCodeRange(mbuf.getCodeRange(), code);
             }
         } else {
             found = bs.at(code);
diff --git a/src/org/joni/ast/StringNode.java b/src/org/joni/ast/StringNode.java
index 433ac33..7d25349 100644
--- a/src/org/joni/ast/StringNode.java
+++ b/src/org/joni/ast/StringNode.java
@@ -19,8 +19,8 @@
  */
 package org.joni.ast;
 
+import org.jcodings.Encoding;
 import org.joni.constants.StringType;
-import org.joni.encoding.Encoding;
 
 public final class StringNode extends Node implements StringType {
     
diff --git a/src/org/joni/bench/AbstractBench.java b/src/org/joni/bench/AbstractBench.java
index 93ea085..5e058f9 100644
--- a/src/org/joni/bench/AbstractBench.java
+++ b/src/org/joni/bench/AbstractBench.java
@@ -1,11 +1,9 @@
 package org.joni.bench;
 
-import org.joni.Regex;
-import org.joni.Matcher;
-import org.joni.Region;
+import org.jcodings.specific.ASCIIEncoding;
 import org.joni.Option;
+import org.joni.Regex;
 import org.joni.Syntax;
-import org.joni.encoding.specific.ASCIIEncoding;
 
 public abstract class AbstractBench {
     protected void bench(String _reg, String _str, int warmup, int times) throws Exception {
diff --git a/src/org/joni/constants/CharacterType.java b/src/org/joni/constants/CharacterType.java
deleted file mode 100644
index 1be7a1c..0000000
--- a/src/org/joni/constants/CharacterType.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.constants;
-
-public interface CharacterType {
-    final int NEWLINE   = 0;
-    final int ALPHA     = 1;
-    final int BLANK     = 2;
-    final int CNTRL     = 3;
-    final int DIGIT     = 4;
-    final int GRAPH     = 5;
-    final int LOWER     = 6;
-    final int PRINT     = 7;
-    final int PUNCT     = 8;
-    final int SPACE     = 9;
-    final int UPPER     = 10;
-    final int XDIGIT    = 11;
-    final int WORD      = 12;
-    final int ALNUM     = 13;      /* alpha || digit */
-    final int ASCII     = 14;
-    
-    final int MAX_STD_CTYPE = 14;
-    
-    final int BIT_NEWLINE  = (1<< NEWLINE);
-    final int BIT_ALPHA    = (1<< ALPHA);
-    final int BIT_BLANK    = (1<< BLANK);
-    final int BIT_CNTRL    = (1<< CNTRL);
-    final int BIT_DIGIT    = (1<< DIGIT);
-    final int BIT_GRAPH    = (1<< GRAPH);
-    final int BIT_LOWER    = (1<< LOWER);
-    final int BIT_PRINT    = (1<< PRINT);
-    final int BIT_PUNCT    = (1<< PUNCT);
-    final int BIT_SPACE    = (1<< SPACE);
-    final int BIT_UPPER    = (1<< UPPER);
-    final int BIT_XDIGIT   = (1<< XDIGIT);
-    final int BIT_WORD     = (1<< WORD);
-    final int BIT_ALNUM    = (1<< ALNUM);
-    final int BIT_ASCII    = (1<< ASCII);
-    
-}
diff --git a/src/org/joni/constants/PosixBracket.java b/src/org/joni/constants/PosixBracket.java
deleted file mode 100644
index 6f66ba5..0000000
--- a/src/org/joni/constants/PosixBracket.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.constants;
-
-import org.joni.util.BytesHash;
-
-public class PosixBracket{
-
-    public static final byte[][] PBSNamesUpper = {
-        "Alnum".getBytes(),
-        "Alpha".getBytes(),
-        "Blank".getBytes(),
-        "Cntrl".getBytes(),
-        "Digit".getBytes(),
-        "Graph".getBytes(),
-        "Lower".getBytes(),
-        "Print".getBytes(),
-        "Punct".getBytes(),
-        "Space".getBytes(),
-        "Upper".getBytes(),
-        "XDigit".getBytes(),
-        "ASCII".getBytes(),
-        "Word".getBytes()
-    };
-
-    public static final byte[][] PBSNamesLower = {
-        "alnum".getBytes(),
-        "alpha".getBytes(),
-        "blank".getBytes(),
-        "cntrl".getBytes(),
-        "digit".getBytes(),
-        "graph".getBytes(),
-        "lower".getBytes(),
-        "print".getBytes(),
-        "punct".getBytes(),
-        "space".getBytes(),
-        "upper".getBytes(),
-        "xdigit".getBytes(),
-        "ascii".getBytes(),
-        "word".getBytes()
-    };
-
-    public static final int PBSValues[] = {
-        CharacterType.ALNUM,
-        CharacterType.ALPHA,
-        CharacterType.BLANK,
-        CharacterType.CNTRL,
-        CharacterType.DIGIT,
-        CharacterType.GRAPH,
-        CharacterType.LOWER,
-        CharacterType.PRINT,
-        CharacterType.PUNCT,
-        CharacterType.SPACE,
-        CharacterType.UPPER,
-        CharacterType.XDIGIT,
-        CharacterType.ASCII,
-        CharacterType.WORD,
-    };
-
-    public static final BytesHash<Integer> PBSTableUpper = new BytesHash<Integer>(15);    
-    
-	static {
-	    for (int i=0; i<PBSValues.length; i++) PBSTableUpper.put(PBSNamesUpper[i], PBSValues[i]);
-	}
-	
-}
diff --git a/src/org/joni/encoding/AbstractEncoding.java b/src/org/joni/encoding/AbstractEncoding.java
deleted file mode 100644
index 4abbba6..0000000
--- a/src/org/joni/encoding/AbstractEncoding.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding;
-
-import org.joni.ApplyAllCaseFoldFunction;
-import org.joni.CaseFoldCodeItem;
-import org.joni.IntHolder;
-import org.joni.constants.PosixBracket;
-import org.joni.exception.ErrorMessages;
-import org.joni.exception.ValueException;
-
-abstract class AbstractEncoding extends Encoding {
-
-    private final short CTypeTable[];
-
-    protected AbstractEncoding(int minLength, int maxLength, short[]CTypeTable) {
-        super(minLength, maxLength);
-        this.CTypeTable = CTypeTable;
-    }
-
-    /** CTYPE_TO_BIT
-     */
-    private static int CTypeToBit(int ctype) {
-        return 1 << ctype;
-    }   
-
-    /** ONIGENC_IS_XXXXXX_CODE_CTYPE
-     */
-    protected final boolean isCodeCTypeInternal(int code, int ctype) {
-        return (CTypeTable[code] & CTypeToBit(ctype)) != 0; 
-    }    
-    
-    /** onigenc_is_mbc_newline_0x0a / used also by multibyte encodings
-     *
-     */
-    @Override   
-    public boolean isNewLine(byte[]bytes, int p, int end) {
-        return p < end ? bytes[p] == (byte)0x0a : false;
-    }
-
-    protected final int asciiMbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        lower[0] = AsciiToLowerCaseTable[bytes[pp.value] & 0xff];
-        pp.value++;
-        return 1;        
-    }
-
-    /** onigenc_ascii_mbc_case_fold
-     */
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        return asciiMbcCaseFold(flag, bytes, pp, end, lower);
-    }
-
-    public static final byte AsciiToLowerCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247',
-        (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257',
-        (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277',
-        (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307',
-        (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317',
-        (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327',
-        (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377',
-    };
-    
-    public static final byte AsciiToUpperCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\101', (byte)'\102', (byte)'\103', (byte)'\104', (byte)'\105', (byte)'\106', (byte)'\107',
-        (byte)'\110', (byte)'\111', (byte)'\112', (byte)'\113', (byte)'\114', (byte)'\115', (byte)'\116', (byte)'\117',
-        (byte)'\120', (byte)'\121', (byte)'\122', (byte)'\123', (byte)'\124', (byte)'\125', (byte)'\126', (byte)'\127',
-        (byte)'\130', (byte)'\131', (byte)'\132', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\101', (byte)'\102', (byte)'\103', (byte)'\104', (byte)'\105', (byte)'\106', (byte)'\107',
-        (byte)'\110', (byte)'\111', (byte)'\112', (byte)'\113', (byte)'\114', (byte)'\115', (byte)'\116', (byte)'\117',
-        (byte)'\120', (byte)'\121', (byte)'\122', (byte)'\123', (byte)'\124', (byte)'\125', (byte)'\126', (byte)'\127',
-        (byte)'\130', (byte)'\131', (byte)'\132', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247',
-        (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257',
-        (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277',
-        (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307',
-        (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317',
-        (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327',
-        (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377',
-    };
-
-    protected final void asciiApplyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) {
-        int[]code = new int[]{0};
-        
-        for (int i=0; i<AsciiLowerMap.length; i++) {
-            code[0] = AsciiLowerMap[i][1];
-            fun.apply(AsciiLowerMap[i][0], code, 1, arg);
-            
-            code[0] = AsciiLowerMap[i][0];
-            fun.apply(AsciiLowerMap[i][1], code, 1, arg);
-        }        
-    }
-    
-    /** onigenc_ascii_apply_all_case_fold / used also by multibyte encodings
-     */
-    @Override
-    public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) {
-        asciiApplyAllCaseFold(flag, fun, arg);
-    }
-    
-    protected static final int AsciiLowerMap[][] = {
-        {0x41, 0x61},
-        {0x42, 0x62},
-        {0x43, 0x63},
-        {0x44, 0x64},
-        {0x45, 0x65},
-        {0x46, 0x66},
-        {0x47, 0x67},
-        {0x48, 0x68},
-        {0x49, 0x69},
-        {0x4a, 0x6a},
-        {0x4b, 0x6b},
-        {0x4c, 0x6c},
-        {0x4d, 0x6d},
-        {0x4e, 0x6e},
-        {0x4f, 0x6f},
-        {0x50, 0x70},
-        {0x51, 0x71},
-        {0x52, 0x72},
-        {0x53, 0x73},
-        {0x54, 0x74},
-        {0x55, 0x75},
-        {0x56, 0x76},
-        {0x57, 0x77},
-        {0x58, 0x78},
-        {0x59, 0x79},
-        {0x5a, 0x7a}
-    };
-    
-    protected static final CaseFoldCodeItem[] EMPTY_FOLD_CODES = new CaseFoldCodeItem[]{};  
-    protected final CaseFoldCodeItem[]asciiCaseFoldCodesByString(int flag, byte[]bytes, int p, int end) {
-        int b = bytes[p] & 0xff;
-        
-        if (0x41 <= b && b <= 0x5a) {
-            return new CaseFoldCodeItem[]{new CaseFoldCodeItem(1, 1, new int[]{b + 0x20})};
-        } else if (0x61 <= b && b <= 0x7a) {
-            return new CaseFoldCodeItem[]{new CaseFoldCodeItem(1, 1, new int[]{b - 0x20})};
-        } else {
-            return EMPTY_FOLD_CODES;
-        }
-    }
-    
-    /** onigenc_ascii_get_case_fold_codes_by_str / used also by multibyte encodings
-     */
-    @Override
-    public CaseFoldCodeItem[]caseFoldCodesByString(int flag, byte[]bytes, int p, int end) {
-        return asciiCaseFoldCodesByString(flag, bytes, p, end);
-    }
-
-    /** onigenc_minimum_property_name_to_ctype
-     *  notably overridden by unicode encodings
-     */
-    @Override
-    public int propertyNameToCType(byte[]bytes, int p, int end) {
-        Integer ctype = PosixBracket.PBSTableUpper.get(bytes, p, end);
-        if (ctype != null) return ctype;
-        throw new ValueException(ErrorMessages.ERR_INVALID_CHAR_PROPERTY_NAME, new String(bytes, p, end - p));
-    }
-}
diff --git a/src/org/joni/encoding/CanBeTrailTableEncoding.java b/src/org/joni/encoding/CanBeTrailTableEncoding.java
deleted file mode 100644
index 867312a..0000000
--- a/src/org/joni/encoding/CanBeTrailTableEncoding.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding;
-
-public abstract class CanBeTrailTableEncoding extends MultiByteEncoding {
-
-    protected final boolean[] CanBeTrailTable;
-
-    protected CanBeTrailTableEncoding(int minLength, int maxLength, int[]EncLen, int[][]Trans, short[]CTypeTable, boolean[]CanBeTrailTable) {
-        super(minLength, maxLength, EncLen, Trans, CTypeTable);
-        this.CanBeTrailTable = CanBeTrailTable;
-    }
-
-    @Override
-    public int leftAdjustCharHead(byte[]bytes, int p, int end) {
-        if (end <= p) return end;
-
-        int p_ = end;
-
-        if (CanBeTrailTable[bytes[p_] & 0xff]) {
-            while (p_ > p) {
-                if (!(EncLen[bytes[--p_] & 0xff] > 1)) {
-                    p_++;
-                    break;
-                }
-            }
-        }
-        int len = length(bytes, p_, end);
-        if (p_ + len > end) return p_;
-        p_ += len;
-        return p_ + ((end - p_) & ~1);
-    }
-
-    @Override
-    public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) {
-        return !CanBeTrailTable[bytes[p] & 0xff];
-    }
-}
\ No newline at end of file
diff --git a/src/org/joni/encoding/CaseFoldMapEncoding.java b/src/org/joni/encoding/CaseFoldMapEncoding.java
deleted file mode 100644
index 7bb1bd9..0000000
--- a/src/org/joni/encoding/CaseFoldMapEncoding.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding;
-
-import org.joni.ApplyAllCaseFoldFunction;
-import org.joni.CaseFoldCodeItem;
-
-public abstract class CaseFoldMapEncoding extends SingleByteEncoding {
-
-    protected final int[][]CaseFoldMap;
-    protected final boolean foldFlag;    
-    
-    protected CaseFoldMapEncoding(short[]CTypeTable, byte[]LowerCaseTable, int[][]CaseFoldMap) {
-        this(CTypeTable, LowerCaseTable, CaseFoldMap, true);
-    }
-    
-    protected CaseFoldMapEncoding(short[]CTypeTable, byte[]LowerCaseTable, int[][]CaseFoldMap, boolean foldFlag) {
-        super(CTypeTable, LowerCaseTable);
-        this.CaseFoldMap = CaseFoldMap;
-        this.foldFlag = foldFlag;
-    }
-    
-    /** onigenc_apply_all_case_fold_with_map
-     */
-    protected final int applyAllCaseFoldWithMap(int mapSize, int[][]map, boolean essTsettFlag, int flag,
-                                          ApplyAllCaseFoldFunction fun, Object arg) {
-
-        asciiApplyAllCaseFold(flag, fun, arg);
-        int[]code = new int[]{0};
-        
-        for (int i=0; i<mapSize; i++) {
-            code[0] = map[i][1];
-            
-            fun.apply(map[i][0], code, 1, arg);
-            
-            code[0] = map[i][0];
-            fun.apply(map[i][1], code, 1, arg);
-        }
-        
-        if (essTsettFlag) ssApplyAllCaseFold(flag, fun, arg);
-        return 0;
-    }
-
-    static final int[] SS = new int []{0x73, 0x73};
-    /** ss_apply_all_case_fold
-     */
-    private void ssApplyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) {
-        fun.apply(0xdf, SS, 2, arg);
-    }
-    
-    /** onigenc_get_case_fold_codes_by_str_with_map
-     */
-    protected final CaseFoldCodeItem[]getCaseFoldCodesByStringWithMap(int mapSize, int[][]map, 
-                                                  boolean essTsettFlag, int flag,
-                                                  byte[]bytes, int p, int end) {
-        int b = bytes[p] & 0xff;
-        
-        if (0x41 <= b && b <= 0x5a) {
-            CaseFoldCodeItem item0 = new CaseFoldCodeItem(1, 1, new int[]{b + 0x20});
-
-            if (b == 0x53 && essTsettFlag && end > p + 1 &&
-               (bytes[p+1] == (byte)0x53 || bytes[p+1] == (byte)0x73)) { /* SS */
-                CaseFoldCodeItem item1 = new CaseFoldCodeItem(2, 1, new int[]{0xdf});
-                return new CaseFoldCodeItem[]{item0, item1};
-            } else {
-                return new CaseFoldCodeItem[]{item0};
-            }
-        } else if (0x61 <= b && b <= 0x7a) {
-            CaseFoldCodeItem item0 = new CaseFoldCodeItem(1, 1, new int[]{b - 0x20});
-            
-            if (b == 0x73 && essTsettFlag && end >p + 1 &&
-               (bytes[p+1] == (byte)0x73 || bytes[p+1] == (byte)0x53)) { /* ss */
-                CaseFoldCodeItem item1 = new CaseFoldCodeItem(2, 1, new int[]{0xdf});
-
-                return new CaseFoldCodeItem[]{item0, item1};
-            } else {
-                return new CaseFoldCodeItem[]{item0};
-            }
-        } else if (b == 0xdf && essTsettFlag) {
-            CaseFoldCodeItem item0 = new CaseFoldCodeItem(1, 2, new int[]{'s', 's'});
-            CaseFoldCodeItem item1 = new CaseFoldCodeItem(1, 2, new int[]{'S', 'S'});
-            CaseFoldCodeItem item2 = new CaseFoldCodeItem(1, 2, new int[]{'s', 'S'});
-            CaseFoldCodeItem item3 = new CaseFoldCodeItem(1, 2, new int[]{'S', 's'});
-
-            return new CaseFoldCodeItem[]{item0, item1, item2, item3};
-        } else {
-            for (int i=0; i<mapSize; i++) {
-                if (b == map[i][0]) {
-                    return new CaseFoldCodeItem[]{new CaseFoldCodeItem(1, 1, new int[]{map[i][1]})};
-                } else if (b == map[i][1]) {
-                    return new CaseFoldCodeItem[]{new CaseFoldCodeItem(1, 1, new int[]{map[i][0]})};
-                }
-            }
-        }
-        return EMPTY_FOLD_CODES;
-    }
-
-    @Override
-    public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) {
-        applyAllCaseFoldWithMap(CaseFoldMap.length, CaseFoldMap, foldFlag, flag, fun, arg);      
-    }
-    
-    @Override
-    public CaseFoldCodeItem[]caseFoldCodesByString(int flag, byte[]bytes, int p, int end) {
-        return getCaseFoldCodesByStringWithMap(CaseFoldMap.length, CaseFoldMap, foldFlag, flag, bytes, p, end); 
-    }
-    
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        return code < 256 ? isCodeCTypeInternal(code, ctype) : false;
-    }    
-}
diff --git a/src/org/joni/encoding/Encoding.java b/src/org/joni/encoding/Encoding.java
deleted file mode 100644
index a82742f..0000000
--- a/src/org/joni/encoding/Encoding.java
+++ /dev/null
@@ -1,482 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding;
-
-import org.joni.ApplyAllCaseFoldFunction;
-import org.joni.CaseFoldCodeItem;
-import org.joni.IntHolder;
-import org.joni.constants.CharacterType;
-import org.joni.exception.ErrorMessages;
-import org.joni.exception.ValueException;
-import org.joni.util.BytesHash;
-
-public abstract class Encoding {
-
-    protected final int minLength, maxLength;
-    protected final boolean isFixedWidth, isSingleByte;
-
-    protected byte[]name;
-    protected int hashCode;
-
-    protected Encoding(int minLength, int maxLength) {
-        this.minLength = minLength;
-        this.maxLength = maxLength;
-        this.isFixedWidth = minLength == maxLength;
-        this.isSingleByte = isFixedWidth && minLength == 1;
-    }
-    
-    @Override
-    public abstract String toString();
-
-    @Override
-    public final boolean equals(Object other) {
-        return this == other;       
-    }
-    
-    @Override
-    public final int hashCode() {
-        if (name == null) getName();
-        return hashCode;
-    }
-
-    public final byte[]getName() {
-        if (name == null) {
-            name = toString().getBytes();
-            hashCode = BytesHash.hashCode(name, 0, name.length);
-        }
-        return name;
-    }
-
-    /**
-     * Returns character length given character head
-     * returns <code>1</code> for singlebyte encodings or performs direct length table lookup for multibyte ones.   
-     * 
-     * @param   c
-     *          Character head
-     * Oniguruma equivalent: <code>mbc_enc_len</code>
-     * 
-     * To be deprecated very soon (use length(byte[]bytes, int p, int end) version) 
-     */
-    public abstract int length(byte c);
-
-    /**
-     * Returns character length given stream, character position and stream end
-     * returns <code>1</code> for singlebyte encodings or performs sanity validations for multibyte ones 
-     * and returns the character length, missing characters in the stream otherwise
-     * 
-     * Throws IllegalCharacterLengthException if bad sequence is discovered
-     * 
-     * @param   c
-     *          Character head
-     * Oniguruma equivalent: <code>mbc_enc_len</code>
-     * modified for 1.9 purposes, 
-     */
-    public abstract int length(byte[]bytes, int p, int end);
-
-    /**
-     * Returns maximum character byte length that can appear in an encoding  
-     * 
-     * Oniguruma equivalent: <code>max_enc_len</code>
-     */
-    public final int maxLength() {
-        return maxLength;
-    }
-    
-    /* ONIGENC_MBC_MAXLEN_DIST */
-    public final int maxLengthDistance() {
-        return maxLength();
-    }
-
-    /**
-     * Returns minimum character byte length that can appear in an encoding  
-     * 
-     * Oniguruma equivalent: <code>min_enc_len</code>
-     */    
-    public final int minLength() {
-        return minLength;
-    }
-
-    /**
-     * Returns true if <code>bytes[p]</code> is a head of a new line character
-     * 
-     * Oniguruma equivalent: <code>is_mbc_newline</code>
-     */
-    public abstract boolean isNewLine(byte[]bytes, int p, int end);
-
-    /**
-     * Returns code point for a character
-     * 
-     * Oniguruma equivalent: <code>mbc_to_code</code>
-     */
-    public abstract int mbcToCode(byte[]bytes, int p, int end);
-
-    /**
-     * Returns character length given a code point
-     * 
-     * Oniguruma equivalent: <code>code_to_mbclen</code>
-     */
-    public abstract int codeToMbcLength(int code);
-
-    /**
-     * Extracts code point into it's multibyte representation
-     * 
-     * @return character length for the given code point 
-     * 
-     * Oniguruma equivalent: <code>code_to_mbc</code>
-     */
-    public abstract int codeToMbc(int code, byte[]bytes, int p);
-
-    /**
-     * Performs case folding for a character at <code>bytes[pp.value]</code>
-     * 
-     * @param   flag    case fold flag
-     * @param   pp      an <code>IntHolder</code> that points at character head
-     * @param   to      a buffer where to extract case folded character
-     *
-     * Oniguruma equivalent: <code>mbc_case_fold</code>
-     */
-    public abstract int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]to);
-    
-    /**
-     * Returns lower case table if it's safe to use it directly, otherwise <code>null</code>
-     * Used for fast case insensitive matching for some singlebyte encodings
-     * 
-     * @return lower case table 
-     */
-    public byte[] toLowerCaseTable() {return null;}
-
-    /**
-     * Expand case folds given a character class (used for case insensitive matching)
-     * 
-     * @param   flag    case fold flag
-     * @param   fun     case folding functor (look at: <code>ApplyCaseFold</code>)
-     * @param   arg     case folding functor argument (look at: <code>ApplyCaseFoldArg</code>)
-     * 
-     * Oniguruma equivalent: <code>apply_all_case_fold</code>
-     */
-    public abstract void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg);
-    
-    /**
-     * Expand AST string nodes into their folded alternatives (look at: <code>Analyser.expandCaseFoldString</code>)
-     * 
-     * Oniguruma equivalent: <code>get_case_fold_codes_by_str</code>
-     */
-    public abstract CaseFoldCodeItem[]caseFoldCodesByString(int flag, byte[]bytes, int p, int end);
-    
-    /**
-     * Returns character type given character type name (used when e.g. \p{Alpha})
-     * 
-     * Oniguruma equivalent: <code>property_name_to_ctype</code>
-     */
-    public abstract int propertyNameToCType(byte[]bytes, int p, int end);
-
-    /**
-     * Perform a check whether given code is of given character type (e.g. used by isWord(someByte) and similar methods)
-     * 
-     * @param   code    a code point of a character
-     * @param   ctype   a character type to check against
-     * 
-     * Oniguruma equivalent: <code>is_code_ctype</code>
-     */
-    public abstract boolean isCodeCType(int code, int ctype);
-
-    /**
-     * Returns code range for a given character type
-     * 
-     * Oniguruma equivalent: <code>get_ctype_code_range</code>
-     */
-    public abstract int[]ctypeCodeRange(int ctype, IntHolder sbOut);
-
-    /**
-     * Seeks the previous character head in a stream
-     * 
-     * Oniguruma equivalent: <code>left_adjust_char_head</code>
-     */
-    public abstract int leftAdjustCharHead(byte[]bytes, int p, int end);
-
-    /**
-     * Returns true if it's safe to use reversal Boyer-Moore search fail fast algorithm
-     * 
-     * Oniguruma equivalent: <code>is_allowed_reverse_match</code>
-     */
-    public abstract boolean isReverseMatchAllowed(byte[]bytes, int p, int end);
-    
-    /* onigenc_get_right_adjust_char_head / ONIGENC_LEFT_ADJUST_CHAR_HEAD */
-    public final int rightAdjustCharHead(byte[]bytes, int p, int end) {
-        int p_ = leftAdjustCharHead(bytes, p, end);
-        if (p_ < end) p_ += length(bytes, p_, end);
-        return p_;
-    }
-
-    /* onigenc_get_right_adjust_char_head_with_prev */
-    public final int rightAdjustCharHeadWithPrev(byte[]bytes, int p, int end, IntHolder prev) {
-        int p_ = leftAdjustCharHead(bytes, p, end);
-        if (p_ < end) {
-            if (prev != null) prev.value = p_;
-            p_ += length(bytes, p_, end);
-        } else {
-            if (prev != null) prev.value = -1; /* Sorry */
-        }
-        return p_;
-    }
-
-    /* onigenc_get_prev_char_head */
-    public final int prevCharHead(byte[]bytes, int p, int end) {
-        if (end <= p) return -1; // ??      
-        return leftAdjustCharHead(bytes, p, end - 1);     
-    }
-
-    /* onigenc_step_back */
-    public final int stepBack(byte[]bytes, int p, int end, int n) {
-        while (end != -1 && n-- > 0) {
-            if (end <= p) return -1;
-            end = leftAdjustCharHead(bytes, p, end - 1);
-        }
-        return end;
-    }
-    
-    /* onigenc_step */
-    public final int step(byte[]bytes, int p, int end, int n) {
-        int q = p;
-        while (n-- > 0) {
-            q += length(bytes, q, end);
-        }
-        return q <= end ? q : -1;
-    }
-    
-    /* onigenc_strlen */
-    public int strLength(byte[]bytes, int p, int end) {
-        int n = 0;
-        int q = p;
-        while (q < end) {
-            q += length(bytes, q, end);
-            n++;
-        }
-        return n;
-    }
-    
-    /* onigenc_strlen_null */
-    public final int strLengthNull(byte[]bytes, int p, int end) {
-        int n = 0;
-
-        while (true) {
-            if (bytes[p] == 0) {
-                int len = minLength();
-                
-                if (len == 1) return n;
-                int q = p + 1;
-                
-                while (len > 1) {
-                    if (bytes[q] != 0) break;
-                    q++;
-                    len--;
-                }
-                if (len == 1) return n;
-            }
-            p += length(bytes, p, end);
-            n++;
-        }        
-    }
-    
-    /* onigenc_str_bytelen_null */
-    public final int strByteLengthNull(byte[]bytes, int p, int end) {
-        int p_, start;
-        p_ = start = 0;
-
-        while (true) {
-            if (bytes[p_] == 0) {
-                int len = minLength();
-                if (len == 1) return p_ - start;
-                int q = p_ + 1;
-                while (len > 1) {
-                    if (q >= bytes.length) return p_ - start;
-                    if (bytes[q] != 0) break;
-                    q++;
-                    len--;
-                }
-                if (len == 1) return p_ - start;
-            }
-            p_ += length(bytes, p_, end);
-        }   
-    }
-    
-    /* onigenc_with_ascii_strncmp */
-    public final int strNCmp(byte[]bytes, int p, int end, byte[]ascii, int asciiP, int n) {
-        while (n-- > 0) {
-            if (p >= end) return ascii[asciiP];
-            int c = mbcToCode(bytes, p, end);
-            int x = ascii[asciiP] - c;
-            if (x != 0) return x;
-            
-            asciiP++;
-            p += length(bytes, p, end);
-        }
-        return 0;
-    }   
-
-    public final boolean isNewLine(int code) {
-        return isCodeCType(code, CharacterType.NEWLINE);
-    }
-    
-    public final boolean isGraph(int code) {
-        return isCodeCType(code, CharacterType.GRAPH);
-    }
-    
-    public final boolean isPrint(int code) {
-        return isCodeCType(code, CharacterType.PRINT);
-    }
-    
-    public final boolean isAlnum(int code) {
-        return isCodeCType(code, CharacterType.ALNUM);
-    }
-    
-    public final boolean isAlpha(int code) {
-        return isCodeCType(code, CharacterType.ALPHA);
-    }
-    
-    public final boolean isLower(int code) {
-        return isCodeCType(code, CharacterType.LOWER);
-    }
-    
-    public final boolean isUpper(int code) {
-        return isCodeCType(code, CharacterType.UPPER);
-    }
-    
-    public final boolean isCntrl(int code) {
-        return isCodeCType(code, CharacterType.CNTRL);
-    }
-    
-    public final boolean isPunct(int code) {
-        return isCodeCType(code, CharacterType.PUNCT);
-    }
-    
-    public final boolean isSpace(int code) {
-        return isCodeCType(code, CharacterType.SPACE);
-    }
-    
-    public final boolean isBlank(int code) {
-        return isCodeCType(code, CharacterType.BLANK);
-    }
-    
-    public final boolean isDigit(int code) {
-        return isCodeCType(code, CharacterType.DIGIT);
-    }
-    
-    public final boolean isXDigit(int code) {
-        return isCodeCType(code, CharacterType.XDIGIT);
-    }
-    
-    public final boolean isWord(int code) {
-        return isCodeCType(code, CharacterType.WORD);
-    }
-
-    // ONIGENC_IS_MBC_WORD
-    public final boolean isMbcWord(byte[]bytes, int p, int end) {
-        return isWord(mbcToCode(bytes, p, end));
-    }
-
-    // IS_CODE_SB_WORD
-    public final boolean isSbWord(int code) {
-        return isAscii(code) && isWord(code);
-    }
-
-    // ONIGENC_IS_MBC_HEAD
-    public final boolean isMbcHead(byte[]bytes, int p, int end) {
-        return length(bytes, p, end) != 1;
-    }
-    
-    public boolean isMbcCrnl(byte[]bytes, int p, int end) {
-        return mbcToCode(bytes, p, end) == 13 && isNewLine(bytes, p + length(bytes, p, end), end);
-    }    
-
-    // ============================================================
-    // helpers
-    // ============================================================
-    public static int digitVal(int code) {
-        return code - '0';
-    }
-    
-    public static int odigitVal(int code) {
-        return digitVal(code);
-    }
-    
-    public final int xdigitVal(int code) {
-        if (isDigit(code)) {
-            return digitVal(code);
-        } else {
-            return isUpper(code) ? code - 'A' + 10 : code - 'a' + 10;
-        }
-    }
-
-    // ONIGENC_IS_MBC_ASCII
-    public static boolean isMbcAscii(byte b) {
-        return (b & 0xff) < 128; // b > 0 ? 
-    }
-    
-    // ONIGENC_IS_CODE_ASCII
-    public static boolean isAscii(int code) {
-        return code < 128; 
-    }
-    
-    public static byte asciiToLower(int c) {
-        return AbstractEncoding.AsciiToLowerCaseTable[c];
-    }
-    
-    public static byte asciiToUpper(int c) {
-        return AbstractEncoding.AsciiToUpperCaseTable[c];
-    }
-    
-    public static boolean isWordGraphPrint(int ctype) {
-        return ctype == CharacterType.WORD ||
-               ctype == CharacterType.GRAPH ||
-               ctype == CharacterType.PRINT;
-    } 
-    
-    public final int mbcodeStartPosition() {
-        return minLength() > 1 ? 0 : 0x80;      
-    }
-
-    public final boolean isSingleByte() {
-        return isSingleByte;
-    }
-
-    public final boolean isFixedWidth() {
-        return isFixedWidth;
-    }
-
-    public static final byte NEW_LINE = (byte)0x0a;
-
-    public static Encoding load(String name) { 
-        String encClassName = "org.joni.encoding.specific." + name + "Encoding";
-
-        Class<?> encClass;
-        try {
-            encClass = Class.forName(encClassName);
-        } catch (ClassNotFoundException cnfe) {
-            throw new ValueException(ErrorMessages.ERR_ENCODING_CLASS_DEF_NOT_FOUND, encClassName);
-        }
-
-        try {
-            return (Encoding)encClass.getField("INSTANCE").get(encClass);
-        } catch (Exception e) {
-            throw new ValueException(ErrorMessages.ERR_ENCODING_LOAD_ERROR, encClassName);
-        }
-    }
-}
diff --git a/src/org/joni/encoding/EucEncoding.java b/src/org/joni/encoding/EucEncoding.java
deleted file mode 100644
index 9e6c520..0000000
--- a/src/org/joni/encoding/EucEncoding.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding;
-
-import org.joni.Config;
-
-public abstract class EucEncoding extends MultiByteEncoding {
-
-    protected EucEncoding(int minLength, int maxLength, int[]EncLen, int[][]Trans, short[]CTypeTable) {
-        super(minLength, maxLength, EncLen, Trans, CTypeTable);
-    }
-
-    protected abstract boolean isLead(int c);
-    
-    @Override
-    public int leftAdjustCharHead(byte[]bytes, int p, int end) {
-        /* In this encoding mb-trail bytes doesn't mix with single bytes. */
-        if (end <= p) return end;
-        int p_ = end;
-
-        while (!isLead(bytes[p_] & 0xff) && p_ > p) p_--;
-
-        // TODO: length(bytes, p_, end) introduces regression for look-behind here:
-        // /(?<=��|����)��/ =~ '������', fix this or fix the test
-        int len = length(bytes, p_, p);
-
-        if (p_ + len > end) return p_;
-
-        p_ += len;
-        return p_ + ((end - p_) & ~1);
-    }    
-}
diff --git a/src/org/joni/encoding/ISOEncoding.java b/src/org/joni/encoding/ISOEncoding.java
deleted file mode 100644
index 7b113ee..0000000
--- a/src/org/joni/encoding/ISOEncoding.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding;
-
-import org.joni.Config;
-import org.joni.IntHolder;
-
-public abstract class ISOEncoding extends CaseFoldMapEncoding {
-    
-    protected ISOEncoding(short[]CTypeTable, byte[]LowerCaseTable, int[][]CaseFoldMap) {
-        this(CTypeTable, LowerCaseTable, CaseFoldMap, true);
-    }
-    
-    protected ISOEncoding(short[]CTypeTable, byte[]LowerCaseTable, int[][]CaseFoldMap, boolean foldFlag) {
-        super(CTypeTable, LowerCaseTable, CaseFoldMap, foldFlag);
-    }
-
-    /** iso_*_mbc_case_fold
-     */
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        int p = pp.value;
-        int lowerP = 0;
-        
-        if (bytes[p] == (byte)0xdf && (flag & Config.INTERNAL_ENC_CASE_FOLD_MULTI_CHAR) != 0) {
-            lower[lowerP++] = 's';
-            lower[lowerP] = 's';
-            pp.value++;
-            return 2;
-        }
-        
-        lower[lowerP] = LowerCaseTable[bytes[p] & 0xff];
-        pp.value++;
-        return 1;
-    }    
-
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        return code < 256 ? isCodeCTypeInternal(code, ctype) : false;
-    }   
-}
diff --git a/src/org/joni/encoding/MultiByteEncoding.java b/src/org/joni/encoding/MultiByteEncoding.java
deleted file mode 100644
index 20c2dd6..0000000
--- a/src/org/joni/encoding/MultiByteEncoding.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding;
-
-import org.joni.IntHolder;
-import org.joni.encoding.specific.ASCIIEncoding;
-import org.joni.exception.ErrorMessages;
-import org.joni.exception.IllegalCharacterException;
-import org.joni.exception.ValueException;
-
-public abstract class MultiByteEncoding extends AbstractEncoding {
-
-    protected final int EncLen[];
-
-    protected static final int A = -1; // ACCEPT
-    protected static final int F = -2; // FAILURE
-
-    protected final int Trans[][];
-    protected final int TransZero[];
-
-    protected MultiByteEncoding(int minLength, int maxLength, int[]EncLen, int[][]Trans, short[]CTypeTable) {
-        super(minLength, maxLength, CTypeTable);
-        this.EncLen = EncLen;
-        this.Trans = Trans;
-        this.TransZero = Trans != null ? Trans[0] : null;
-    }
-
-    @Override
-    public int length(byte c) {        
-        return EncLen[c & 0xff];       
-    }
-
-    protected final int safeLengthForUptoFour(byte[]bytes, int p ,int end) {
-        int b = bytes[p] & 0xff;
-        int s = TransZero[b];
-        if (s < 0) {
-            if (s == A) return 1;
-            throw IllegalCharacterException.INSTANCE;
-        }
-        return lengthForTwoUptoFour(bytes, p, end, b, s);
-    }
-
-    private int lengthForTwoUptoFour(byte[]bytes, int p, int end, int b, int s) {
-        if (++p == end) return -(EncLen[b] - 1);
-        s = Trans[s][bytes[p] & 0xff];
-        if (s < 0) {
-            if (s == A) return 2;
-            throw IllegalCharacterException.INSTANCE;
-        }
-        return lengthForThreeUptoFour(bytes, p, end, b, s);
-    }
-
-    private int lengthForThreeUptoFour(byte[]bytes, int p, int end, int b, int s) {
-        if (++p == end) return -(EncLen[b] - 2);
-        s = Trans[s][bytes[p] & 0xff];
-        if (s < 0) {
-            if (s == A) return 3;
-            throw IllegalCharacterException.INSTANCE;
-        }
-        if (++p == end) return -(EncLen[b] - 3);
-        s = Trans[s][bytes[p] & 0xff];
-        if (s == A) return 4;
-        throw IllegalCharacterException.INSTANCE;  
-    }
-
-    protected final int safeLengthForUptoThree(byte[]bytes, int p, int end) {
-        int b = bytes[p] & 0xff;
-        int s = TransZero[b];
-        if (s < 0) {
-            if (s == A) return 1;
-            throw IllegalCharacterException.INSTANCE;
-        }
-        return lengthForTwoUptoThree(bytes, p, end, b, s);
-    }
-
-    private int lengthForTwoUptoThree(byte[]bytes, int p, int end, int b, int s) {
-        if (++p == end) return -(EncLen[b] - 1);
-        s = Trans[s][bytes[p] & 0xff];
-        if (s < 0) {
-            if (s == A) return 2;
-            throw IllegalCharacterException.INSTANCE;
-        }
-        return lengthForThree(bytes, p, end, b, s);
-    }
-
-    private int lengthForThree(byte[]bytes, int p, int end, int b, int s) {
-        if (++p == end) return -(EncLen[b] - 2);
-        s = Trans[s][bytes[p] & 0xff];
-        if (s == A) return 3;
-        throw IllegalCharacterException.INSTANCE;
-    }     
-
-    protected final int safeLengthForUptoTwo(byte[]bytes, int p, int end) {
-        int b = bytes[p] & 0xff;
-        int s = TransZero[b];
-        
-        if (s < 0) {
-            if (s == A) return 1;
-            throw IllegalCharacterException.INSTANCE;
-        }
-        return lengthForTwo(bytes, p, end, b, s);
-    }    
-
-    private int lengthForTwo(byte[]bytes, int p, int end, int b, int s) {
-        if (++p == end) return -(EncLen[b] - 1);
-        s = Trans[s][bytes[p] & 0xff];
-        if (s == A) return 2;
-        throw IllegalCharacterException.INSTANCE;
-    }
-
-    protected final int mbnMbcToCode(byte[]bytes, int p, int end) {
-        int len = length(bytes, p, end);
-        int n = bytes[p++] & 0xff;
-        if (len == 1) return n;
-        
-        for (int i=1; i<len; i++) {
-            if (p >= end) break;
-            int c = bytes[p++] & 0xff;
-            n <<= 8;
-            n += c;
-        }
-        return n;
-    }
-    
-    protected final int mbnMbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        int p = pp.value;
-        int lowerP = 0;
-        
-        if (isAscii(bytes[p] & 0xff)) {
-            lower[lowerP] = ASCIIEncoding.AsciiToLowerCaseTable[bytes[p] & 0xff];
-            pp.value++;
-            return 1;
-        } else {
-            int len = length(bytes, p, end);
-            for (int i=0; i<len; i++) {
-                lower[lowerP++] = bytes[p++];
-            }
-            pp.value += len;
-            return len; /* return byte length of converted to lower char */
-        }
-    }
-
-    protected final int mb2CodeToMbcLength(int code) {
-        return ((code & 0xff00) != 0) ? 2 : 1;
-    }
-    
-    protected final int mb4CodeToMbcLength(int code) {
-        if ((code & 0xff000000) != 0) {
-            return 4;
-        } else if ((code & 0xff0000) != 0) {
-            return 3;
-        } else if ((code & 0xff00) != 0) {
-            return 2;
-        } else { 
-            return 1;
-        }
-    }
-
-    protected final int mb2CodeToMbc(int code, byte[]bytes, int p) {
-        int p_ = p;
-        if ((code & 0xff00) != 0) {
-            bytes[p_++] = (byte)((code >>> 8) & 0xff);
-        }
-        bytes[p_++] = (byte)(code & 0xff);
-        
-        if (length(bytes, p, p_) != (p_ - p)) throw new ValueException(ErrorMessages.ERR_INVALID_CODE_POINT_VALUE);
-        return p_ - p;
-    }
-
-    protected final int mb4CodeToMbc(int code, byte[]bytes, int p) {        
-        int p_ = p;        
-        if ((code & 0xff000000) != 0)           bytes[p_++] = (byte)((code >>> 24) & 0xff);
-        if ((code & 0xff0000) != 0 || p_ != p)  bytes[p_++] = (byte)((code >>> 16) & 0xff);
-        if ((code & 0xff00) != 0 || p_ != p)    bytes[p_++] = (byte)((code >>> 8) & 0xff);
-        bytes[p_++] = (byte)(code & 0xff);
-        
-        if (length(bytes, p, p_) != (p_ - p)) throw new ValueException(ErrorMessages.ERR_INVALID_CODE_POINT_VALUE);
-        return p_ - p;
-    }
-
-    protected final boolean mb2IsCodeCType(int code, int ctype) {
-        if (code < 128) {            
-            return isCodeCTypeInternal(code, ctype); // configured with ascii
-        } else {
-            if (isWordGraphPrint(ctype)) {
-                return codeToMbcLength(code) > 1;
-            }
-        }
-        return false;
-    }
-
-    protected final boolean mb4IsCodeCType(int code, int ctype) {
-        return mb2IsCodeCType(code, ctype);
-    }
-}
diff --git a/src/org/joni/encoding/SingleByteEncoding.java b/src/org/joni/encoding/SingleByteEncoding.java
deleted file mode 100644
index 831995e..0000000
--- a/src/org/joni/encoding/SingleByteEncoding.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding;
-
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.exception.ErrorMessages;
-import org.joni.exception.ValueException;
-
-public abstract class SingleByteEncoding extends AbstractEncoding {
-
-    protected final byte[]LowerCaseTable; 
-    
-    protected SingleByteEncoding(short[]CTypeTable, byte[]LowerCaseTable) {
-        super(1, 1, CTypeTable);
-        this.LowerCaseTable = LowerCaseTable;
-    }
-    
-    /** onigenc_single_byte_mbc_enc_len
-     */
-    @Override
-    public final int length(byte c) {
-        return 1;
-    }
-
-    @Override
-    public int length(byte[]bytes, int p, int end) {
-        return 1;
-    }
-
-    @Override
-    public final int strLength(byte[]bytes, int p, int end) {
-        return end - p;
-    }    
-
-    // onigenc_is_mbc_newline_0x0a here
-    
-    /** onigenc_single_byte_mbc_to_code
-     */
-    @Override
-    public int mbcToCode(byte[]bytes, int p, int end){
-        return bytes[p] & 0xff;
-    }
-
-    /** onigenc_single_byte_code_to_mbclen
-     */
-    @Override
-    public final int codeToMbcLength(int code) {
-        if (Config.VANILLA) {
-            if (code < 0x100) return 1;
-            throw new ValueException(ErrorMessages.ERR_INVALID_CODE_POINT_VALUE);
-        } else {
-            return 1;
-        }
-    }
-
-    /** onigenc_single_byte_code_to_mbc
-     */
-    @Override
-    public final int codeToMbc(int code, byte[]bytes, int p) {
-        // TODO: raise if (code > 0xff): range error "out of char range" 
-        bytes[p] = (byte)(code & 0xff); // c implementation also uses mask here
-        return 1;
-    }
-
-    /** onigenc_not_support_get_ctype_code_range
-     */
-    @Override
-    public final int[]ctypeCodeRange(int ctype, IntHolder sbOut) {
-        return null; 
-    }
-    
-    /** onigenc_single_byte_left_adjust_char_head
-     */
-    @Override
-    public final int leftAdjustCharHead(byte[]bytes, int start, int p) {
-        return p;
-    }
-    
-    /** onigenc_always_true_is_allowed_reverse_match
-     */
-    @Override
-    public final boolean isReverseMatchAllowed(byte[]bytes, int p, int end) {
-        return true;        
-    }
-}
diff --git a/src/org/joni/encoding/specific/ASCIIEncoding.java b/src/org/joni/encoding/specific/ASCIIEncoding.java
deleted file mode 100644
index 69e4d89..0000000
--- a/src/org/joni/encoding/specific/ASCIIEncoding.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.encoding.SingleByteEncoding;
-
-public final class ASCIIEncoding extends SingleByteEncoding {
-
-    protected ASCIIEncoding() {
-        super(AsciiCtypeTable, AsciiToLowerCaseTable);
-    }
-    
-    @Override
-    public String toString() {
-        return "US-ASCII";
-    }
-
-    @Override
-    public final byte[]toLowerCaseTable() {
-        return LowerCaseTable;
-    }    
-
-    /** ascii_is_code_ctype / ONIGENC_IS_ASCII_CODE_CTYPE
-     */
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        return code < 128 ? isCodeCTypeInternal(code, ctype) : false;
-    }
-
-    static final short AsciiCtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000            
-    };          
-    
-    public static final ASCIIEncoding INSTANCE = new ASCIIEncoding();
-}
diff --git a/src/org/joni/encoding/specific/BIG5Encoding.java b/src/org/joni/encoding/specific/BIG5Encoding.java
deleted file mode 100644
index 36d3f98..0000000
--- a/src/org/joni/encoding/specific/BIG5Encoding.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.encoding.CanBeTrailTableEncoding;
-
-public final class BIG5Encoding extends CanBeTrailTableEncoding {
-
-    protected BIG5Encoding() {
-        super(1, 2, Big5EncLen, BIG5Trans, ASCIIEncoding.AsciiCtypeTable, BIG5_CAN_BE_TRAIL_TABLE);
-    }
-
-    @Override
-    public String toString() {
-        return "Big5";
-    }
-
-    @Override
-    public int length(byte[]bytes, int p, int end) {
-        if (Config.VANILLA){
-            return length(bytes[p]);
-        } else {
-            return safeLengthForUptoTwo(bytes, p, end);
-        }
-    }
-
-    @Override
-    public int mbcToCode(byte[]bytes, int p, int end) {
-        return mbnMbcToCode(bytes, p, end);
-    }
-    
-    @Override
-    public int codeToMbcLength(int code) {
-        return mb2CodeToMbcLength(code);
-    }
-
-    @Override
-    public int codeToMbc(int code, byte[]bytes, int p) {
-        return mb2CodeToMbc(code, bytes, p);
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        return mbnMbcCaseFold(flag, bytes, pp, end, lower);
-    }
-    
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        return mb2IsCodeCType(code, ctype);
-    }
-    
-    @Override
-    public int[]ctypeCodeRange(int ctype, IntHolder sbOut) {
-        return null;
-    }
-
-    static final boolean BIG5_CAN_BE_TRAIL_TABLE[] = {
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false
-    };
-
-    static final int Big5EncLen[] = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
-    };
-
-    private static final int BIG5Trans[][] = Config.VANILLA ? null : new int[][]{
-        { /* S0   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F 
-        },
-        { /* S1   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F 
-        }
-    };
-
-    public static final BIG5Encoding INSTANCE = new BIG5Encoding();
-}
diff --git a/src/org/joni/encoding/specific/CP1251Encoding.java b/src/org/joni/encoding/specific/CP1251Encoding.java
deleted file mode 100644
index 5fab9c1..0000000
--- a/src/org/joni/encoding/specific/CP1251Encoding.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.IntHolder;
-import org.joni.encoding.CaseFoldMapEncoding;
-
-final public class CP1251Encoding extends CaseFoldMapEncoding {
-
-    protected CP1251Encoding() {
-        super(CP1251_CtypeTable, CP1251_ToLowerCaseTable, CP1251_CaseFoldMap, false);
-    }
-    
-    @Override
-    public String toString() {
-        return "CP1251";
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        int p = pp.value;
-        int lowerP = 0;
-        
-        lower[lowerP] = LowerCaseTable[bytes[p] & 0xff];
-        pp.value++;        
-        return 1;
-    }
-    
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        return code < 256 ? isCodeCTypeInternal(code, ctype) : false;
-    }
-    
-    static final short CP1251_CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x428c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x34a2, 0x34a2, 0x01a0, 0x30e2, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
-        0x0000, 0x01a0, 0x34a2, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x30e2, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
-        0x0008, 0x0000, 0x30e2, 0x01a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x0280, 0x34a2, 0x30e2, 0x34a2, 0x01a0, 0x34a2, 0x01a0, 0x01a0,
-        0x34a2, 0x01a0, 0x34a2, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x34a2,
-        0x01a0, 0x01a0, 0x34a2, 0x30e2, 0x30e2, 0x31e2, 0x01a0, 0x01a0,
-        0x30e2, 0x0000, 0x30e2, 0x01a0, 0x30e2, 0x34a2, 0x30e2, 0x30e2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2
-    };
-    
-    static final byte CP1251_ToLowerCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\220', (byte)'\203', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\232', (byte)'\213', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\242', (byte)'\242', (byte)'\274', (byte)'\244', (byte)'\264', (byte)'\246', (byte)'\247',
-        (byte)'\270', (byte)'\251', (byte)'\272', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\277',
-        (byte)'\260', (byte)'\261', (byte)'\263', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\276', (byte)'\276', (byte)'\277',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377'
-    };
-    
-    static final int CP1251_CaseFoldMap[][] = {
-        { 0xb8, 0xa8 },
-
-        { 0xe0, 0xc0 },
-        { 0xe1, 0xc1 },
-        { 0xe2, 0xc2 },
-        { 0xe3, 0xc3 },
-        { 0xe4, 0xc4 },
-        { 0xe5, 0xc5 },
-        { 0xe6, 0xc6 },
-        { 0xe7, 0xc7 },
-        { 0xe8, 0xc8 },
-        { 0xe9, 0xc9 },
-        { 0xea, 0xca },
-        { 0xeb, 0xcb },
-        { 0xec, 0xcc },
-        { 0xed, 0xcd },
-        { 0xee, 0xce },
-        { 0xef, 0xcf },
-
-        { 0xf0, 0xd0 },
-        { 0xf1, 0xd1 },
-        { 0xf2, 0xd2 },
-        { 0xf3, 0xd3 },
-        { 0xf4, 0xd4 },
-        { 0xf5, 0xd5 },
-        { 0xf6, 0xd6 },
-        { 0xf7, 0xd7 },
-        { 0xf8, 0xd8 },
-        { 0xf9, 0xd9 },
-        { 0xfa, 0xda },
-        { 0xfb, 0xdb },
-        { 0xfc, 0xdc },
-        { 0xfd, 0xdd },
-        { 0xfe, 0xde },
-        { 0xff, 0xdf }
-    };
-    
-    public static final CP1251Encoding INSTANCE = new CP1251Encoding();
-}
diff --git a/src/org/joni/encoding/specific/CP949Encoding.java b/src/org/joni/encoding/specific/CP949Encoding.java
deleted file mode 100644
index 35e4ee8..0000000
--- a/src/org/joni/encoding/specific/CP949Encoding.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.encoding.CanBeTrailTableEncoding;
-
-public final class CP949Encoding extends CanBeTrailTableEncoding {
-
-    protected CP949Encoding() {
-        super(1, 2, CP949EncLen, CP949Trans, ASCIIEncoding.AsciiCtypeTable, CP949_CAN_BE_TRAIL_TABLE);
-    }
-    
-    @Override
-    public String toString() {
-        return "CP949";
-    }
-
-    @Override
-    public int length(byte[]bytes, int p, int end) {
-        if (Config.VANILLA){
-            return length(bytes[p]);
-        } else {
-            return safeLengthForUptoTwo(bytes, p, end);
-        }
-    }
-
-    @Override
-    public int mbcToCode(byte[]bytes, int p, int end) {
-        return mbnMbcToCode(bytes, p, end);
-    }
-    
-    @Override
-    public int codeToMbcLength(int code) {
-        return mb2CodeToMbcLength(code);
-    }
-    
-    @Override
-    public int codeToMbc(int code, byte[]bytes, int p) {
-        return mb2CodeToMbc(code, bytes, p);
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        return mbnMbcCaseFold(flag, bytes, pp, end, lower);
-    }
-
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        return mb2IsCodeCType(code, ctype);
-    }
-    
-    @Override
-    public int[]ctypeCodeRange(int ctype, IntHolder sbOut) {
-        return null;
-    }
-
-    static final boolean CP949_CAN_BE_TRAIL_TABLE[] = {
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false
-    };
-
-    static final int CP949EncLen[] = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
-    };
-
-    private static final int CP949Trans[][] = Config.VANILLA ? null : new int[][]{
-        { /* S0   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 8 */ A, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F 
-        },
-        { /* S1   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 5 */ A, A, A, A, A, A, A, A, A, A, A, F, F, F, F, F,
-          /* 6 */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 7 */ A, A, A, A, A, A, A, A, A, A, A, F, F, F, F, F,
-          /* 8 */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F 
-        }
-    };
-    
-    public static final CP949Encoding INSTANCE = new CP949Encoding();
-}
diff --git a/src/org/joni/encoding/specific/EUCJPEncoding.java b/src/org/joni/encoding/specific/EUCJPEncoding.java
deleted file mode 100644
index db49368..0000000
--- a/src/org/joni/encoding/specific/EUCJPEncoding.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.CodeRangeBuffer;
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.constants.CharacterType;
-import org.joni.encoding.EucEncoding;
-import org.joni.exception.ErrorMessages;
-import org.joni.exception.InternalException;
-import org.joni.exception.ValueException;
-import org.joni.util.BytesHash;
-
-public final class EUCJPEncoding extends EucEncoding {
-
-    protected EUCJPEncoding() {
-        super(1, 3, EUCJPEncLen, EUCJPTrans, ASCIIEncoding.AsciiCtypeTable);
-    }
-    
-    @Override
-    public String toString() {
-        return "EUC-JP";
-    }
-
-    @Override
-    public int length(byte[]bytes, int p, int end) {
-        if (Config.VANILLA) {
-            return length(bytes[p]);
-        } else {
-            return safeLengthForUptoThree(bytes, p, end);
-        }
-    }
-
-    @Override
-    public int mbcToCode(byte[]bytes, int p, int end) {
-        return mbnMbcToCode(bytes, p, end);
-    }
-    
-    @Override
-    public int codeToMbcLength(int code) {
-        if (isAscii(code)) return 1;
-        if (Config.VANILLA) {
-            if ((code & 0xff0000) != 0) return 3;
-            if ((code &   0xff00) != 0) return 2;
-        } else {
-            if (code > 0xffffff) return 0;
-            if ((code & 0xff0000) >= 0x800000) return 3;
-            if ((code & 0xff00) >= 0x8000) return 2;
-        }
-        throw new ValueException(ErrorMessages.ERR_INVALID_CODE_POINT_VALUE);
-    }
-    
-    @Override
-    public int codeToMbc(int code, byte[]bytes, int p) {
-        int p_ = p;
-        if ((code & 0xff0000) != 0) bytes[p_++] = (byte)((code >> 16) & 0xff); // need mask here ??
-        if ((code &   0xff00) != 0) bytes[p_++] = (byte)((code >>  8) & 0xff);
-        bytes[p_++] = (byte)(code & 0xff);
-        
-        if (length(bytes, p, p_) != p_ - p) throw new ValueException(ErrorMessages.ERR_INVALID_CODE_POINT_VALUE);
-        return p_ - p;
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        int p = pp.value;        
-        int lowerP = 0;
-        
-        if (isMbcAscii(bytes[p])) {
-            lower[lowerP] = ASCIIEncoding.AsciiToLowerCaseTable[bytes[p] & 0xff];
-            pp.value++;
-            return 1;
-        } else {
-            int len = length(bytes, p, end);
-            for (int i=0; i<len; i++) {
-                lower[lowerP++] = bytes[p++];
-            }
-            pp.value += len;
-            return len; /* return byte length of converted char to lower */
-        }
-    }
-    
-    protected boolean isLead(int c) {
-        return ((c - 0xa1) & 0xff) > 0xfe - 0xa1;
-    }
-    
-    @Override
-    public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) {
-        int c = bytes[p] & 0xff;
-        return c <= 0x7e || c == 0x8e || c == 0x8f;
-    }
-    
-    private static final int CR_Hiragana[] = {
-        1,
-        0xa4a1, 0xa4f3
-    }; /* CR_Hiragana */
-    
-    private static final int CR_Katakana[] = {
-        3,
-        0xa5a1, 0xa5f6,
-        0xaaa6, 0xaaaf,
-        0xaab1, 0xaadd
-    }; /* CR_Katakana */
-    
-    private static final int PropertyList[][] = new int[][] {
-        CR_Hiragana,
-        CR_Katakana
-    };
-    
-    private static final BytesHash<Integer> CTypeNameHash = new BytesHash<Integer>();
-
-    static {
-        CTypeNameHash.put("Hiragana".getBytes(), 1 + CharacterType.MAX_STD_CTYPE);
-        CTypeNameHash.put("Katakana".getBytes(), 2 + CharacterType.MAX_STD_CTYPE);        
-    }
-    
-    @Override
-    public int propertyNameToCType(byte[]bytes, int p, int end) {
-        Integer ctype;
-        if ((ctype = CTypeNameHash.get(bytes, p, end)) == null) {
-            return super.propertyNameToCType(bytes, p, end);
-        }
-        return ctype;
-    }
-    
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        if (ctype <= CharacterType.MAX_STD_CTYPE) {
-            if (code < 128) { 
-                // ctype table is configured with ASCII
-                return isCodeCTypeInternal(code, ctype);
-            } else {
-                if (isWordGraphPrint(ctype)) {
-                    return codeToMbcLength(code) > 1;
-                }
-            }
-        } else {
-            ctype -= (CharacterType.MAX_STD_CTYPE + 1);
-            if (ctype >= PropertyList.length) throw new InternalException(ErrorMessages.ERR_TYPE_BUG);
-            return CodeRangeBuffer.isInCodeRange(PropertyList[ctype], code);
-        }
-        return false;        
-    }
-    
-    @Override 
-    public int[]ctypeCodeRange(int ctype, IntHolder sbOut) {
-        if (ctype <= CharacterType.MAX_STD_CTYPE) {
-            return null;
-        } else {
-            sbOut.value = 0x80;
-            
-            ctype -= (CharacterType.MAX_STD_CTYPE + 1);
-            if (ctype >= PropertyList.length) throw new InternalException(ErrorMessages.ERR_TYPE_BUG);
-            return PropertyList[ctype];
-        }
-    }
-    
-    static final int EUCJPEncLen[] = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
-    };
-
-    private static final int EUCJPTrans[][] = Config.VANILLA ? null : new int[][]{
-        { /* S0   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, 1, 2,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F 
-        },
-        { /* S1   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F 
-        },
-        { /* S2   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F 
-        }
-    };
-
-    public static final EUCJPEncoding INSTANCE = new EUCJPEncoding();
-}
diff --git a/src/org/joni/encoding/specific/EUCKREncoding.java b/src/org/joni/encoding/specific/EUCKREncoding.java
deleted file mode 100644
index f645879..0000000
--- a/src/org/joni/encoding/specific/EUCKREncoding.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.encoding.EucEncoding;
-
-public final class EUCKREncoding extends EucEncoding {
-
-    protected EUCKREncoding() {
-        super(1, 2, EUCKREncLen, EUCKRTrans, ASCIIEncoding.AsciiCtypeTable);
-    }
-    
-    @Override
-    public String toString() {
-        return "EUC-KR";
-    }
-
-    @Override
-    public int length(byte[]bytes, int p, int end) {
-        if (Config.VANILLA){
-            return length(bytes[p]);
-        } else {
-            return safeLengthForUptoTwo(bytes, p, end);
-        }
-    }
-
-    @Override
-    public int mbcToCode(byte[]bytes, int p, int end) {
-        return mbnMbcToCode(bytes, p, end);
-    }
-    
-    @Override
-    public int codeToMbcLength(int code) {
-        return mb2CodeToMbcLength(code);
-    }
-    
-    @Override
-    public int codeToMbc(int code, byte[]bytes, int p) {
-        return mb2CodeToMbc(code, bytes, p);
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        return mbnMbcCaseFold(flag, bytes, pp, end, lower);
-    }
-    
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        return mb2IsCodeCType(code, ctype);
-    }
-    
-    @Override
-    public int[]ctypeCodeRange(int ctype, IntHolder sbOut) {
-        return null;
-    }
-    
-    // euckr_islead
-    protected boolean isLead(int c) {
-        return ((c) < 0xa1 || (c) == 0xff);
-    }
-    
-    @Override
-    public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) {
-        int c = bytes[p] & 0xff;
-        return c <= 0x7e;
-    }
-    
-    static final int EUCKREncLen[] = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
-    };
-
-    private static final int EUCKRTrans[][] = Config.VANILLA ? null : new int[][]{
-        { /* S0   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F 
-        },
-        { /* S1   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F 
-        }
-    };
-    
-    public static final EUCKREncoding INSTANCE = new EUCKREncoding();
-}
diff --git a/src/org/joni/encoding/specific/EUCTWEncoding.java b/src/org/joni/encoding/specific/EUCTWEncoding.java
deleted file mode 100644
index f10e789..0000000
--- a/src/org/joni/encoding/specific/EUCTWEncoding.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.encoding.EucEncoding;
-
-public final class EUCTWEncoding extends EucEncoding {
-
-    protected EUCTWEncoding() {
-        super(1, 4, EUCTWEncLen, EUCTWTrans, ASCIIEncoding.AsciiCtypeTable);
-    }
-    
-    @Override
-    public String toString() {
-        return "EUC-TW";
-    }
-
-    @Override
-    public int length(byte[]bytes, int p, int end) {
-        if (Config.VANILLA) {
-            return length(bytes[p]);
-        } else {
-            return safeLengthForUptoFour(bytes, p, end);
-        }
-    }
-
-    @Override
-    public int mbcToCode(byte[]bytes, int p, int end) {
-        return mbnMbcToCode(bytes, p, end);
-    }
-    
-    @Override
-    public int codeToMbcLength(int code) {
-        return mb4CodeToMbcLength(code);
-    }
-    
-    @Override
-    public int codeToMbc(int code, byte[]bytes, int p) {
-        return mb4CodeToMbc(code, bytes, p);
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        return mbnMbcCaseFold(flag, bytes, pp, end, lower);
-    }
-    
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        return mb4IsCodeCType(code, ctype);
-    }
-    
-    @Override
-    public int[]ctypeCodeRange(int ctype, IntHolder sbOut) {
-        return null;
-    }
-
-    // euckr_islead
-    protected boolean isLead(int c) {
-        if (Config.VANILLA) {
-            return ((c < 0xa1 && c != 0x8e) || c == 0xff);
-        } else {
-            return (c - 0xa1) > 0xfe - 0xa1;
-        }
-    }
-
-    @Override    
-    public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) {
-        int c = bytes[p] & 0xff;
-        return c <= 0x7e;
-    }
-    
-    static final int EUCTWEncLen[] = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
-    };
-
-    private static final int EUCTWTrans[][] = Config.VANILLA ? null : new int[][]{
-        { /* S0   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, 2, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F 
-        },
-        { /* S1   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F 
-        },
-        { /* S2   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* b */ 3, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F 
-        },
-        { /* S3   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F 
-        }
-    };
-
-    public static final EUCTWEncoding INSTANCE = new EUCTWEncoding();
-}
diff --git a/src/org/joni/encoding/specific/EmacsMuleEncoding.java b/src/org/joni/encoding/specific/EmacsMuleEncoding.java
deleted file mode 100644
index decde29..0000000
--- a/src/org/joni/encoding/specific/EmacsMuleEncoding.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.encoding.MultiByteEncoding;
-import org.joni.exception.ErrorMessages;
-import org.joni.exception.ValueException;
-
-public final class EmacsMuleEncoding extends MultiByteEncoding {
-
-    protected EmacsMuleEncoding() {
-        super(1, 4, EmacsMuleEncLen, EmacsMuleTrans, ASCIIEncoding.AsciiCtypeTable);
-    }
-    
-    @Override
-    public String toString() {
-        return "Emacs-Mule";
-    }
-
-    @Override
-    public int length(byte[]bytes, int p, int end) {
-        if (Config.VANILLA){
-            return length(bytes[p]);
-        } else {
-            return safeLengthForUptoFour(bytes, p, end);
-        }
-    }
-
-    @Override
-    public int mbcToCode(byte[]bytes, int p, int end) {
-        return mbnMbcToCode(bytes, p, end) & 0x7FFFFFFF;
-    }
-    
-    @Override
-    public int codeToMbcLength(int code) {
-        // TODO: this won't work with signed values, probably need to move to long or use bitwise 'and' and masks
-        if (isAscii(code)) {
-            return 1;
-        } else if (code > 0xffffffff) { 
-            return 0;
-        } else if ((code & 0xff000000) >= 0x80000000) {
-            return 4;
-        } else if ((code & 0xff0000) >= 0x800000) {
-            return 3;
-        } else if ((code & 0xff00) >= 0x8000) {
-            return 2;
-        }
-        throw new ValueException(ErrorMessages.ERR_INVALID_CODE_POINT_VALUE);
-    }
-    
-    @Override
-    public int codeToMbc(int code, byte[]bytes, int p) {
-        int p_ = p;        
-        if ((code & 0xff000000) != 0)           bytes[p_++] = (byte)((code >>> 24) | 0x80);
-        if ((code & 0xff0000) != 0)             bytes[p_++] = (byte)((code >>> 16) & 0xff);
-        if ((code & 0xff00) != 0 )              bytes[p_++] = (byte)((code >>> 8) & 0xff);
-        bytes[p_++] = (byte)(code & 0xff);
-        
-        if (length(bytes, p, p_) != (p_ - p)) throw new ValueException(ErrorMessages.ERR_INVALID_CODE_POINT_VALUE);
-        return p_ - p;
-    }
-
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        return mbnMbcCaseFold(flag, bytes, pp, end, lower);
-    }
-
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        if (code < 128) {            
-            return isCodeCTypeInternal(code, ctype); // configured with ascii
-        } else {
-            return codeToMbcLength(code) > 1;
-        }
-    }
-
-    @Override
-    public int[]ctypeCodeRange(int ctype, IntHolder sbOut) {
-        return null;
-    }
-    
-    private static boolean islead(int c) {
-        return c - 0x81 > 0x9d - 0x81;
-    }
-    
-    @Override
-    public int leftAdjustCharHead(byte[] bytes, int p, int end) {
-        if (end <= p) return end;
-        int p_ = end;
-        while (!islead(bytes[p_]) && p_ > p) p_--;
-        return p_;
-    };
-    
-    @Override
-    public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) {
-        return true;
-    }
-    
-    static final int EmacsMuleEncLen[] = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
-    };
-
-    private static final int EmacsMuleTrans[][] = Config.VANILLA ? null : new int[][]{
-        { /* S0   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 8 */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* 9 */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 5, 6, F, F,
-          /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F
-        },
-        { /* S1   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A 
-        },
-        { /* S2   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 
-        },
-        { /* S3   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F
-        },
-        { /* S4   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F
-        },
-        { /* S5   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* f */ 2, 2, 2, 2, 2, F, F, F, F, F, F, F, F, F, F, F
-        },
-        { /* S6   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* f */ F, F, F, F, F, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, F
-        },
-    };
-    
-    public static final EmacsMuleEncoding INSTANCE = new EmacsMuleEncoding();
-}
diff --git a/src/org/joni/encoding/specific/GB18030Encoding.java b/src/org/joni/encoding/specific/GB18030Encoding.java
deleted file mode 100644
index 0cfe1ea..0000000
--- a/src/org/joni/encoding/specific/GB18030Encoding.java
+++ /dev/null
@@ -1,516 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.encoding.MultiByteEncoding;
-import org.joni.exception.IllegalCharacterException;
-
-public final class GB18030Encoding extends MultiByteEncoding {
-
-    protected GB18030Encoding() {
-        super(1, 4, null, GB18030Trans, ASCIIEncoding.AsciiCtypeTable);
-    }
-
-    @Override
-    public String toString() {
-        return "GB18030";
-    }
-
-    @Override
-    public int length(byte[]bytes, int p, int end) {
-        if (Config.VANILLA) {
-            if (GB18030_MAP[bytes[p] & 0xff] != CM) return 1;
-            int c = GB18030_MAP[bytes[p + 1] & 0xff];
-            if (c == C4) return 4;
-            if (c == C1) return 1; /* illegal sequence */
-            return 2;
-        } else {
-            int s = TransZero[bytes[p] & 0xff];
-            if (s < 0) {
-                if (s == A) return 1;
-                throw IllegalCharacterException.INSTANCE;
-            }
-            return lengthForTwoUptoFour(bytes, p, end, s);
-        }
-    }
-
-    private int lengthForTwoUptoFour(byte[]bytes, int p, int end, int s) {
-        if (++p == end) return -1;
-        s = Trans[s][bytes[p] & 0xff];
-        if (s < 0) {
-            if (s == A) return 2;
-            throw IllegalCharacterException.INSTANCE;
-        }
-        return lengthForThreeUptoFour(bytes, p, end, s);
-    }
-
-    private int lengthForThreeUptoFour(byte[]bytes, int p, int end, int s) {
-        if (++p == end) return -2;
-        s = Trans[s][bytes[p] & 0xff];
-        if (s < 0) {
-            if (s == A) return 3;
-            throw IllegalCharacterException.INSTANCE;
-        }
-        if (++p == end) return -1;
-        s = Trans[s][bytes[p] & 0xff];
-        if (s == A) return 4;
-        throw IllegalCharacterException.INSTANCE;  
-    }    
-
-    @Override
-    public int mbcToCode(byte[]bytes, int p, int end) {
-        if (Config.VANILLA) {
-            return mbnMbcToCode(bytes, p, end);
-        } else {
-            return mbnMbcToCode(bytes, p, end) & 0x7FFFFFFF;
-        }
-    }
-    
-    @Override
-    public int codeToMbcLength(int code) {
-        return mb4CodeToMbcLength(code);
-    }
-
-    @Override
-    public int codeToMbc(int code, byte[]bytes, int p) {
-        if (Config.VANILLA) {
-            return mb4CodeToMbc(code, bytes, p);
-        } else {
-            if ((code & 0xff000000) != 0) code |= 0x80000000;
-            return mb4CodeToMbc(code, bytes, p);
-        }
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        return mbnMbcCaseFold(flag, bytes, pp, end, lower);
-    }
-    
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        return mb4IsCodeCType(code, ctype);
-    }
-    
-    @Override
-    public int[]ctypeCodeRange(int ctype, IntHolder sbOut) {
-        return null;
-    }
-
-    private enum State {
-        START,
-        One_C2,
-        One_C4,
-        One_CM,
-
-        Odd_CM_One_CX,
-        Even_CM_One_CX,
-
-        /* CMC4 : pair of "CM C4" */
-        One_CMC4,
-        Odd_CMC4,
-        One_C4_Odd_CMC4,
-        Even_CMC4,
-        One_C4_Even_CMC4,
-
-        Odd_CM_Odd_CMC4,
-        Even_CM_Odd_CMC4,
-
-        Odd_CM_Even_CMC4,
-        Even_CM_Even_CMC4,
-
-        /* C4CM : pair of "C4 CM" */
-        Odd_C4CM,
-        One_CM_Odd_C4CM,
-        Even_C4CM,
-        One_CM_Even_C4CM,
-
-        Even_CM_Odd_C4CM,
-        Odd_CM_Odd_C4CM,
-        Even_CM_Even_C4CM,
-        Odd_CM_Even_C4CM
-    };
-
-    @Override
-    public int leftAdjustCharHead(byte[]bytes, int start, int s) {
-        State state = State.START;
-        
-        for (int p = s; p >= start; p--) {
-            switch (state) {
-            case START:
-                switch (GB18030_MAP[bytes[p] & 0xff]) {
-                case C1:    return s;
-                case C2:    state = State.One_C2; /* C2 */
-                    break;
-                case C4:    state = State.One_C4; /* C4 */
-                    break;
-                case CM:    state = State.One_CM; /* CM */
-                    break;
-                }
-                break;
-                case One_C2: /* C2 */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return s;
-                    case CM:    state = State.Odd_CM_One_CX; /* CM C2 */
-                        break;
-                    }
-                    break;
-                case One_C4: /* C4 */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return s;
-                    case CM:    state = State.One_CMC4;
-                        break;
-                    }
-                    break;
-                case One_CM: /* CM */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:    return s;
-                    case C4:    state = State.Odd_C4CM;
-                        break;
-                    case CM:    state = State.Odd_CM_One_CX; /* CM CM */
-                        break;
-                    }
-                    break;
-                case Odd_CM_One_CX: /* CM C2 */ /* CM CM */ /* CM CM CM C4 */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return (s - 1);
-                    case CM:    state = State.Even_CM_One_CX;
-                        break;
-                    }
-                    break;
-                case Even_CM_One_CX: /* CM CM C2 */ /* CM CM CM */ /* CM CM C4 */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return s;
-                    case CM:    state = State.Odd_CM_One_CX;
-                        break;
-                    }
-                    break;
-                case One_CMC4: /* CM C4 */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:    return (s - 1);
-                    case C4:    state = State.One_C4_Odd_CMC4; /* C4 CM C4 */
-                        break;
-                    case CM:    state = State.Even_CM_One_CX; /* CM CM C4 */
-                        break;
-                    }
-                    break;
-                case Odd_CMC4: /* CM C4 CM C4 CM C4 */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:    return (s - 1);
-                    case C4:    state = State.One_C4_Odd_CMC4;
-                        break;
-                    case CM:    state = State.Odd_CM_Odd_CMC4;
-                        break;
-                    }
-                    break;
-                case One_C4_Odd_CMC4: /* C4 CM C4 */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return (s - 1);
-                    case CM:    state = State.Even_CMC4; /* CM C4 CM C4 */
-                        break;
-                    }
-                    break;
-                case Even_CMC4: /* CM C4 CM C4 */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:    return (s - 3);
-                    case C4:    state = State.One_C4_Even_CMC4;
-                        break;
-                    case CM:    state = State.Odd_CM_Even_CMC4;
-                        break;
-                    }
-                    break;
-                case One_C4_Even_CMC4: /* C4 CM C4 CM C4 */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return (s - 3);
-                    case CM:    state = State.Odd_CMC4;
-                        break;
-                    }
-                    break;
-                case Odd_CM_Odd_CMC4: /* CM CM C4 CM C4 CM C4 */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return (s - 3);
-                    case CM:    state = State.Even_CM_Odd_CMC4;
-                        break;
-                    }
-                    break;
-                case Even_CM_Odd_CMC4: /* CM CM CM C4 CM C4 CM C4 */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return (s - 1);
-                    case CM:    state = State.Odd_CM_Odd_CMC4;
-                        break;
-                    }
-                    break;
-                case Odd_CM_Even_CMC4: /* CM CM C4 CM C4 */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return (s - 1);
-                    case CM:    state = State.Even_CM_Even_CMC4;
-                        break;
-                    }
-                    break;
-                case Even_CM_Even_CMC4: /* CM CM CM C4 CM C4 */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return (s - 3);
-                    case CM:    state = State.Odd_CM_Even_CMC4;
-                        break;
-                    }
-                    break;
-                case Odd_C4CM: /* C4 CM */  /* C4 CM C4 CM C4 CM*/
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return s;
-                    case CM:    state = State.One_CM_Odd_C4CM; /* CM C4 CM */
-                        break;
-                    }
-                    break;
-                case One_CM_Odd_C4CM: /* CM C4 CM */ /* CM C4 CM C4 CM C4 CM */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:    return (s - 2); /* |CM C4 CM */
-                    case C4:    state = State.Even_C4CM;
-                        break;
-                    case CM:    state = State.Even_CM_Odd_C4CM;
-                        break;
-                    }
-                    break;
-                case Even_C4CM: /* C4 CM C4 CM */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return (s - 2);  /* C4|CM C4 CM */
-                    case CM:    state = State.One_CM_Even_C4CM;
-                        break;
-                    }
-                    break;
-                case One_CM_Even_C4CM: /* CM C4 CM C4 CM */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:    return (s - 0);  /*|CM C4 CM C4|CM */
-                    case C4:    state = State.Odd_C4CM;
-                        break;
-                    case CM:    state = State.Even_CM_Even_C4CM;
-                        break;
-                    }
-                    break;
-                case Even_CM_Odd_C4CM: /* CM CM C4 CM */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return (s - 0); /* |CM CM|C4|CM */
-                    case CM:    state = State.Odd_CM_Odd_C4CM;
-                        break;
-                    }
-                    break;
-                case Odd_CM_Odd_C4CM: /* CM CM CM C4 CM */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return (s - 2); /* |CM CM|CM C4 CM */
-                    case CM:    state = State.Even_CM_Odd_C4CM;
-                        break;
-                    }
-                    break;
-                case Even_CM_Even_C4CM: /* CM CM C4 CM C4 CM */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return (s - 2); /* |CM CM|C4|CM C4 CM */
-                    case CM:    state = State.Odd_CM_Even_C4CM;
-                        break;
-                    }
-                    break;
-                case Odd_CM_Even_C4CM: /* CM CM CM C4 CM C4 CM */
-                    switch (GB18030_MAP[bytes[p] & 0xff]) {
-                    case C1:
-                    case C2:
-                    case C4:    return (s - 0);  /* |CM CM|CM C4 CM C4|CM */
-                    case CM:    state = State.Even_CM_Even_C4CM;
-                        break;
-                    }
-                    break;
-            }
-        }
-        
-        switch (state) {
-        case START:             return (s - 0);
-        case One_C2:            return (s - 0);
-        case One_C4:            return (s - 0);
-        case One_CM:            return (s - 0);
-
-        case Odd_CM_One_CX:     return (s - 1);
-        case Even_CM_One_CX:    return (s - 0);
-
-        case One_CMC4:          return (s - 1);
-        case Odd_CMC4:          return (s - 1);
-        case One_C4_Odd_CMC4:   return (s - 1);
-        case Even_CMC4:         return (s - 3);
-        case One_C4_Even_CMC4:  return (s - 3);
-
-        case Odd_CM_Odd_CMC4:   return (s - 3);
-        case Even_CM_Odd_CMC4:  return (s - 1);
-
-        case Odd_CM_Even_CMC4:  return (s - 1);
-        case Even_CM_Even_CMC4: return (s - 3);
-
-        case Odd_C4CM:          return (s - 0);
-        case One_CM_Odd_C4CM:   return (s - 2);
-        case Even_C4CM:         return (s - 2);
-        case One_CM_Even_C4CM:  return (s - 0);
-
-        case Even_CM_Odd_C4CM:  return (s - 0);
-        case Odd_CM_Odd_C4CM:   return (s - 2);
-        case Even_CM_Even_C4CM: return (s - 2);
-        case Odd_CM_Even_C4CM:  return (s - 0);
-        }
-
-        return s;
-    }
-    
-    @Override
-    public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) {
-        return GB18030_MAP[bytes[p] & 0xff] == C1;
-    }
-
-    private static final int C1 = 0; /* one-byte char */
-    private static final int C2 = 1; /* one-byte or second of two-byte char */
-    private static final int C4 = 2; /* one-byte or second or fourth of four-byte char */
-    private static final int CM = 3; /* first of two- or four-byte char or second of two-byte char */
-
-    private static final int GB18030_MAP[] = {
-        C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1,
-        C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1,
-        C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1,
-        C4, C4, C4, C4, C4, C4, C4, C4, C4, C4, C1, C1, C1, C1, C1, C1,
-        C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2,
-        C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2,
-        C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2,
-        C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C1,
-        C2, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM,
-        CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM,
-        CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM,
-        CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM,
-        CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM,
-        CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM,
-        CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM,
-        CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, C1
-    };
-
-    private static final int GB18030Trans[][] = Config.VANILLA ? null : new int[][]{
-        { /* S0   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 8 */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F 
-        },
-        { /* S1   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, F, F, F, F, F, F,
-          /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F,
-          /* 8 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F 
-        },
-        { /* S2   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* 9 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* a */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* b */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* c */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* d */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* e */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* f */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, F 
-        },
-        { /* S3   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ A, A, A, A, A, A, A, A, A, A, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F 
-        }
-    };
-
-    public static final GB18030Encoding INSTANCE = new GB18030Encoding();
-}
diff --git a/src/org/joni/encoding/specific/GBKEncoding.java b/src/org/joni/encoding/specific/GBKEncoding.java
deleted file mode 100644
index a976761..0000000
--- a/src/org/joni/encoding/specific/GBKEncoding.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.encoding.CanBeTrailTableEncoding;
-
-public final class GBKEncoding extends CanBeTrailTableEncoding {
-
-    protected GBKEncoding() {
-        super(1, 2, GBKEncLen, GBKTrans, ASCIIEncoding.AsciiCtypeTable, GBK_CAN_BE_TRAIL_TABLE);
-    }
-
-    @Override
-    public String toString() {
-        return "GBK";
-    }
-
-    @Override
-    public int length(byte[]bytes, int p, int end) {
-        if (Config.VANILLA) {
-            return length(bytes[p]);
-        } else {
-            return safeLengthForUptoTwo(bytes, p, end);
-        }
-    }
-
-    @Override
-    public int mbcToCode(byte[]bytes, int p, int end) {
-        return mbnMbcToCode(bytes, p, end);
-    }
-    
-    @Override
-    public int codeToMbcLength(int code) {
-        return mb2CodeToMbcLength(code);
-    }
-    
-    @Override
-    public int codeToMbc(int code, byte[]bytes, int p) {
-        return mb2CodeToMbc(code, bytes, p);
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        return mbnMbcCaseFold(flag, bytes, pp, end, lower);
-    }
-
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        return mb2IsCodeCType(code, ctype);
-    }
-    
-    @Override
-    public int[]ctypeCodeRange(int ctype, IntHolder sbOut) {
-        return null;
-    }
-
-    static final boolean GBK_CAN_BE_TRAIL_TABLE[] = {
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false
-    };
-
-    static final int GBKEncLen[] = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
-    };
-
-    private static final int GBKTrans[][] = Config.VANILLA ? null : new int[][]{
-        { /* S0   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 8 */ A, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F 
-        },
-        { /* S1   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F,
-          /* 8 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F 
-          }
-    };
-    
-    public static final CP949Encoding INSTANCE = new CP949Encoding();
-}
diff --git a/src/org/joni/encoding/specific/ISO8859_10Encoding.java b/src/org/joni/encoding/specific/ISO8859_10Encoding.java
deleted file mode 100644
index 4ddfc8f..0000000
--- a/src/org/joni/encoding/specific/ISO8859_10Encoding.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.encoding.ISOEncoding;
-
-public final class ISO8859_10Encoding extends ISOEncoding {
-
-    protected ISO8859_10Encoding() {
-        super(ISO8859_10CtypeTable, ISO8859_10ToLowerCaseTable, ISO8859_10CaseFoldMap); 
-    }
-    
-    @Override
-    public String toString() {
-        return "ISO-8859-10";
-    }
-        
-    static final short ISO8859_10CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x34a2,
-        0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x01a0,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x01a0, 0x30e2, 0x30e2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2
-    };
-
-    static final byte ISO8859_10ToLowerCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\247',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\255', (byte)'\276', (byte)'\277',
-        (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377'
-    };
-    
-    static final int ISO8859_10CaseFoldMap[][] = {
-        { 0xa1, 0xb1 },
-        { 0xa2, 0xb2 },
-        { 0xa3, 0xb3 },
-        { 0xa4, 0xb4 },
-        { 0xa5, 0xb5 },
-        { 0xa6, 0xb6 },
-        { 0xa8, 0xb8 },
-        { 0xa9, 0xb9 },
-        { 0xaa, 0xba },
-        { 0xab, 0xbb },
-        { 0xac, 0xbc },
-        { 0xae, 0xbe },
-        { 0xaf, 0xbf },
-
-        { 0xc0, 0xe0 },
-        { 0xc1, 0xe1 },
-        { 0xc2, 0xe2 },
-        { 0xc3, 0xe3 },
-        { 0xc4, 0xe4 },
-        { 0xc5, 0xe5 },
-        { 0xc6, 0xe6 },
-        { 0xc7, 0xe7 },
-        { 0xc8, 0xe8 },
-        { 0xc9, 0xe9 },
-        { 0xca, 0xea },
-        { 0xcb, 0xeb },
-        { 0xcc, 0xec },
-        { 0xcd, 0xed },
-        { 0xce, 0xee },
-        { 0xcf, 0xef },
-
-        { 0xd0, 0xf0 },
-        { 0xd1, 0xf1 },
-        { 0xd2, 0xf2 },
-        { 0xd3, 0xf3 },
-        { 0xd4, 0xf4 },
-        { 0xd5, 0xf5 },
-        { 0xd6, 0xf6 },
-        { 0xd7, 0xf7 },
-        { 0xd8, 0xf8 },
-        { 0xd9, 0xf9 },
-        { 0xda, 0xfa },
-        { 0xdb, 0xfb },
-        { 0xdc, 0xfc },
-        { 0xdd, 0xfd },
-        { 0xde, 0xfe }
-    };  
-
-    public static final ISO8859_10Encoding INSTANCE = new ISO8859_10Encoding();
-}
diff --git a/src/org/joni/encoding/specific/ISO8859_11Encoding.java b/src/org/joni/encoding/specific/ISO8859_11Encoding.java
deleted file mode 100644
index 9c3a605..0000000
--- a/src/org/joni/encoding/specific/ISO8859_11Encoding.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.ApplyAllCaseFoldFunction;
-import org.joni.CaseFoldCodeItem;
-import org.joni.IntHolder;
-import org.joni.encoding.ISOEncoding;
-
-public final class ISO8859_11Encoding extends ISOEncoding {
-
-    protected ISO8859_11Encoding() {
-        super(ISO8859_11CtypeTable, ASCIIEncoding.AsciiToLowerCaseTable, null); 
-    }
-    
-    @Override
-    public String toString() {
-        return "ISO-8859-11";
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        return asciiMbcCaseFold(flag, bytes, pp, end, lower);
-    }
-    
-    @Override
-    public final byte[]toLowerCaseTable() {
-        return LowerCaseTable;
-    }
-    
-    @Override
-    public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) {
-        asciiApplyAllCaseFold(flag, fun, arg);
-    }
-    
-    @Override
-    public CaseFoldCodeItem[]caseFoldCodesByString(int flag, byte[]bytes, int p, int end) {
-        return asciiCaseFoldCodesByString(flag, bytes, p, end);
-    }    
-        
-    static final short ISO8859_11CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x0000, 0x0000, 0x0000, 0x0000
-    };
-
-    public static final ISO8859_11Encoding INSTANCE = new ISO8859_11Encoding();
-}
diff --git a/src/org/joni/encoding/specific/ISO8859_13Encoding.java b/src/org/joni/encoding/specific/ISO8859_13Encoding.java
deleted file mode 100644
index a629d5f..0000000
--- a/src/org/joni/encoding/specific/ISO8859_13Encoding.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.encoding.ISOEncoding;
-
-public final class ISO8859_13Encoding extends ISOEncoding {
-
-    protected ISO8859_13Encoding() {
-        super(ISO8859_13CtypeTable, ISO8859_13ToLowerCaseTable, ISO8859_13CaseFoldMap); 
-    }
-    
-    @Override
-    public String toString() {
-        return "ISO-8859-13";
-    }
-        
-    static final short ISO8859_13CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0,
-        0x34a2, 0x00a0, 0x34a2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x34a2,
-        0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x01a0, 0x30e2, 0x00a0, 0x01a0,
-        0x30e2, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x30e2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x01a0
-    };
-
-    static final byte ISO8859_13ToLowerCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247',
-        (byte)'\270', (byte)'\251', (byte)'\272', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\277',
-        (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377'
-    };
-    
-    static final int ISO8859_13CaseFoldMap[][] = {
-        { 0xc0, 0xe0 },
-        { 0xc1, 0xe1 },
-        { 0xc2, 0xe2 },
-        { 0xc3, 0xe3 },
-        { 0xc4, 0xe4 },
-        { 0xc5, 0xe5 },
-        { 0xc6, 0xe6 },
-        { 0xc7, 0xe7 },
-        { 0xc8, 0xe8 },
-        { 0xc9, 0xe9 },
-        { 0xca, 0xea },
-        { 0xcb, 0xeb },
-        { 0xcc, 0xec },
-        { 0xcd, 0xed },
-        { 0xce, 0xee },
-        { 0xcf, 0xef },
-
-        { 0xd0, 0xf0 },
-        { 0xd1, 0xf1 },
-        { 0xd2, 0xf2 },
-        { 0xd3, 0xf3 },
-        { 0xd4, 0xf4 },
-        { 0xd5, 0xf5 },
-        { 0xd6, 0xf6 },
-        { 0xd8, 0xf8 },
-        { 0xd9, 0xf9 },
-        { 0xda, 0xfa },
-        { 0xdb, 0xfb },
-        { 0xdc, 0xfc },
-        { 0xdd, 0xfd },
-        { 0xde, 0xfe }
-    };  
-
-    public static final ISO8859_13Encoding INSTANCE = new ISO8859_13Encoding();
-}
diff --git a/src/org/joni/encoding/specific/ISO8859_14Encoding.java b/src/org/joni/encoding/specific/ISO8859_14Encoding.java
deleted file mode 100644
index 2d5a36b..0000000
--- a/src/org/joni/encoding/specific/ISO8859_14Encoding.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.encoding.ISOEncoding;
-
-public final class ISO8859_14Encoding extends ISOEncoding {
-
-    protected ISO8859_14Encoding() {
-        super(ISO8859_14CtypeTable, ISO8859_14ToLowerCaseTable, ISO8859_14CaseFoldMap); 
-    }
-    
-    @Override
-    public String toString() {
-        return "ISO-8859-14";
-    }
-        
-    static final short ISO8859_14CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x34a2, 0x30e2, 0x00a0, 0x34a2, 0x30e2, 0x34a2, 0x00a0,
-        0x34a2, 0x00a0, 0x34a2, 0x30e2, 0x34a2, 0x01a0, 0x00a0, 0x34a2,
-        0x34a2, 0x30e2, 0x34a2, 0x30e2, 0x34a2, 0x30e2, 0x00a0, 0x34a2,
-        0x30e2, 0x30e2, 0x30e2, 0x34a2, 0x30e2, 0x34a2, 0x30e2, 0x30e2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2
-    };
-
-    static final byte ISO8859_14ToLowerCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\242', (byte)'\242', (byte)'\243', (byte)'\245', (byte)'\245', (byte)'\253', (byte)'\247',
-        (byte)'\270', (byte)'\251', (byte)'\272', (byte)'\253', (byte)'\274', (byte)'\255', (byte)'\256', (byte)'\377',
-        (byte)'\261', (byte)'\261', (byte)'\263', (byte)'\263', (byte)'\265', (byte)'\265', (byte)'\266', (byte)'\271',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\277', (byte)'\274', (byte)'\276', (byte)'\276', (byte)'\277',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377'
-    };
-    
-    static final int ISO8859_14CaseFoldMap[][] = {
-        { 0xa1, 0xa2 },
-        { 0xa4, 0xa5 },
-        { 0xa6, 0xab },
-        { 0xa8, 0xb8 },
-        { 0xaa, 0xba },
-        { 0xac, 0xbc },
-        { 0xaf, 0xff },
-
-        { 0xb0, 0xb1 },
-        { 0xb2, 0xb3 },
-        { 0xb4, 0xb5 },
-        { 0xb7, 0xb9 },
-        { 0xbb, 0xbf },
-        { 0xbd, 0xbe },
-
-        { 0xc0, 0xe0 },
-        { 0xc1, 0xe1 },
-        { 0xc2, 0xe2 },
-        { 0xc3, 0xe3 },
-        { 0xc4, 0xe4 },
-        { 0xc5, 0xe5 },
-        { 0xc6, 0xe6 },
-        { 0xc7, 0xe7 },
-        { 0xc8, 0xe8 },
-        { 0xc9, 0xe9 },
-        { 0xca, 0xea },
-        { 0xcb, 0xeb },
-        { 0xcc, 0xec },
-        { 0xcd, 0xed },
-        { 0xce, 0xee },
-        { 0xcf, 0xef },
-
-        { 0xd0, 0xf0 },
-        { 0xd1, 0xf1 },
-        { 0xd2, 0xf2 },
-        { 0xd3, 0xf3 },
-        { 0xd4, 0xf4 },
-        { 0xd5, 0xf5 },
-        { 0xd6, 0xf6 },
-        { 0xd7, 0xf7 },
-        { 0xd8, 0xf8 },
-        { 0xd9, 0xf9 },
-        { 0xda, 0xfa },
-        { 0xdb, 0xfb },
-        { 0xdc, 0xfc },
-        { 0xdd, 0xfd },
-        { 0xde, 0xfe }
-    };  
-
-    public static final ISO8859_14Encoding INSTANCE = new ISO8859_14Encoding();
-}
diff --git a/src/org/joni/encoding/specific/ISO8859_15Encoding.java b/src/org/joni/encoding/specific/ISO8859_15Encoding.java
deleted file mode 100644
index a612e3b..0000000
--- a/src/org/joni/encoding/specific/ISO8859_15Encoding.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.encoding.ISOEncoding;
-
-public final class ISO8859_15Encoding extends ISOEncoding {
-
-    protected ISO8859_15Encoding() {
-        super(ISO8859_15CtypeTable, ISO8859_15ToLowerCaseTable, ISO8859_15CaseFoldMap); 
-    }
-    
-    @Override
-    public String toString() {
-        return "ISO-8859-15";
-    }
-        
-    static final short ISO8859_15CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x34a2, 0x00a0,
-        0x30e2, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x34a2, 0x30e2, 0x00a0, 0x01a0,
-        0x30e2, 0x10a0, 0x30e2, 0x01a0, 0x34a2, 0x30e2, 0x34a2, 0x01a0,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2
-    };
-
-    static final byte ISO8859_15ToLowerCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\250', (byte)'\247',
-        (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257',
-        (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\270', (byte)'\265', (byte)'\266', (byte)'\267',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\275', (byte)'\275', (byte)'\377', (byte)'\277',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377'
-    };
-    
-    static final int ISO8859_15CaseFoldMap[][] = {
-        { 0xa6, 0xa8 },
-
-        { 0xb4, 0xb8 },
-        { 0xbc, 0xbd },
-        { 0xbe, 0xff },
-
-        { 0xc0, 0xe0 },
-        { 0xc1, 0xe1 },
-        { 0xc2, 0xe2 },
-        { 0xc3, 0xe3 },
-        { 0xc4, 0xe4 },
-        { 0xc5, 0xe5 },
-        { 0xc6, 0xe6 },
-        { 0xc7, 0xe7 },
-        { 0xc8, 0xe8 },
-        { 0xc9, 0xe9 },
-        { 0xca, 0xea },
-        { 0xcb, 0xeb },
-        { 0xcc, 0xec },
-        { 0xcd, 0xed },
-        { 0xce, 0xee },
-        { 0xcf, 0xef },
-
-        { 0xd0, 0xf0 },
-        { 0xd1, 0xf1 },
-        { 0xd2, 0xf2 },
-        { 0xd3, 0xf3 },
-        { 0xd4, 0xf4 },
-        { 0xd5, 0xf5 },
-        { 0xd6, 0xf6 },
-        { 0xd8, 0xf8 },
-        { 0xd9, 0xf9 },
-        { 0xda, 0xfa },
-        { 0xdb, 0xfb },
-        { 0xdc, 0xfc },
-        { 0xdd, 0xfd },
-        { 0xde, 0xfe }
-    };  
-
-    public static final ISO8859_15Encoding INSTANCE = new ISO8859_15Encoding();
-}
diff --git a/src/org/joni/encoding/specific/ISO8859_16Encoding.java b/src/org/joni/encoding/specific/ISO8859_16Encoding.java
deleted file mode 100644
index 8670766..0000000
--- a/src/org/joni/encoding/specific/ISO8859_16Encoding.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.encoding.ISOEncoding;
-
-public final class ISO8859_16Encoding extends ISOEncoding {
-
-    protected ISO8859_16Encoding() {
-        super(ISO8859_16CtypeTable, ISO8859_16ToLowerCaseTable, ISO8859_16CaseFoldMap);        
-    }
-    
-    @Override
-    public String toString() {
-        return "ISO-8859-16";
-    }
-        
-    static final short ISO8859_16CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x34a2, 0x30e2, 0x34a2, 0x00a0, 0x01a0, 0x34a2, 0x00a0,
-        0x30e2, 0x00a0, 0x34a2, 0x01a0, 0x34a2, 0x01a0, 0x30e2, 0x34a2,
-        0x00a0, 0x00a0, 0x34a2, 0x30e2, 0x34a2, 0x01a0, 0x00a0, 0x01a0,
-        0x30e2, 0x30e2, 0x30e2, 0x01a0, 0x34a2, 0x30e2, 0x34a2, 0x30e2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2
-    };
-
-    static final byte ISO8859_16ToLowerCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\242', (byte)'\242', (byte)'\263', (byte)'\245', (byte)'\245', (byte)'\250', (byte)'\247',
-        (byte)'\250', (byte)'\251', (byte)'\272', (byte)'\253', (byte)'\256', (byte)'\255', (byte)'\256', (byte)'\277',
-        (byte)'\260', (byte)'\261', (byte)'\271', (byte)'\263', (byte)'\270', (byte)'\265', (byte)'\266', (byte)'\267',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\275', (byte)'\275', (byte)'\377', (byte)'\277',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377'
-    };
-    
-    static final int ISO8859_16CaseFoldMap[][] = {
-        { 0xa1, 0xa2 },
-        { 0xa3, 0xb3 },
-        { 0xa6, 0xa8 },
-        { 0xaa, 0xba },
-        { 0xac, 0xae },
-        { 0xaf, 0xbf },
-
-        { 0xb2, 0xb9 },
-        { 0xb4, 0xb8 },
-        { 0xbc, 0xbd },
-        { 0xbe, 0xff },
-
-        { 0xc0, 0xe0 },
-        { 0xc1, 0xe1 },
-        { 0xc2, 0xe2 },
-        { 0xc3, 0xe3 },
-        { 0xc4, 0xe4 },
-        { 0xc5, 0xe5 },
-        { 0xc6, 0xe6 },
-        { 0xc7, 0xe7 },
-        { 0xc8, 0xe8 },
-        { 0xc9, 0xe9 },
-        { 0xca, 0xea },
-        { 0xcb, 0xeb },
-        { 0xcc, 0xec },
-        { 0xcd, 0xed },
-        { 0xce, 0xee },
-        { 0xcf, 0xef },
-
-        { 0xd0, 0xf0 },
-        { 0xd1, 0xf1 },
-        { 0xd2, 0xf2 },
-        { 0xd3, 0xf3 },
-        { 0xd4, 0xf4 },
-        { 0xd5, 0xf5 },
-        { 0xd6, 0xf6 },
-        { 0xd7, 0xf7 },
-        { 0xd8, 0xf8 },
-        { 0xd9, 0xf9 },
-        { 0xda, 0xfa },
-        { 0xdb, 0xfb },
-        { 0xdc, 0xfc },
-        { 0xdd, 0xfd },
-        { 0xde, 0xfe }
-    };  
-
-    public static final ISO8859_16Encoding INSTANCE = new ISO8859_16Encoding();
-}
diff --git a/src/org/joni/encoding/specific/ISO8859_1Encoding.java b/src/org/joni/encoding/specific/ISO8859_1Encoding.java
deleted file mode 100644
index ac0f3a4..0000000
--- a/src/org/joni/encoding/specific/ISO8859_1Encoding.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.ApplyAllCaseFoldFunction;
-import org.joni.CaseFoldCodeItem;
-import org.joni.encoding.ISOEncoding;
-
-public final class ISO8859_1Encoding extends ISOEncoding {
-
-    protected ISO8859_1Encoding() {
-        super(ISO8859_1CtypeTable, ISO8859_1ToLowerCaseTable, ISO8859_1CaseFoldMap);
-    }
-    
-    @Override
-    public String toString() {
-        return "ISO-8859-1";
-    }
-    
-    @Override
-    public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) {
-        applyAllCaseFoldWithMap(CaseFoldMap.length, CaseFoldMap, true, flag, fun, arg);      
-    }
-
-    /** get_case_fold_codes_by_str
-     */
-    @Override
-    public CaseFoldCodeItem[]caseFoldCodesByString(int flag, byte[]bytes, int p, int end) {
-        int b = bytes[p] & 0xff;
-        
-        if (0x41 <= b && b <= 0x5a) {
-            CaseFoldCodeItem item0 = new CaseFoldCodeItem(1, 1, new int[]{b + 0x20});
-            
-            if (b == 0x53 && end > p + 1 &&
-               (bytes[p+1] == (byte)0x53 || bytes[p+1] == (byte)0x73)) { /* ss */
-                CaseFoldCodeItem item1 = new CaseFoldCodeItem(2, 1, new int[]{0xdf});
-
-                return new CaseFoldCodeItem[]{item0, item1};  
-            } else {
-                return new CaseFoldCodeItem[]{item0};
-            }
-        } else if (0x61 <= b && b <= 0x7a) {
-            CaseFoldCodeItem item0 = new CaseFoldCodeItem(1, 1, new int[]{b - 0x20});
-            
-            if (b == 0x73 && end > p + 1 &&
-               (bytes[p+1] == (byte)0x73 || bytes[p+1] == (byte)0x53)) { /* ss */
-                CaseFoldCodeItem item1 = new CaseFoldCodeItem(2, 1, new int[]{0xdf});
-                return new CaseFoldCodeItem[]{item0, item1};
-            } else {
-                return new CaseFoldCodeItem[]{item0};
-            }
-            
-        } else if (0xc0 <= b && b <= 0xcf) {
-            return new CaseFoldCodeItem[]{new CaseFoldCodeItem(1, 1, new int[]{b + 0x20})};
-        } else if (0xd0 <= b && b <= 0xdf) {
-            if (b == 0xdf) {
-                CaseFoldCodeItem item0 = new CaseFoldCodeItem(1, 2, new int[]{'s', 's'});
-                CaseFoldCodeItem item1 = new CaseFoldCodeItem(1, 2, new int[]{'S', 'S'});
-                CaseFoldCodeItem item2 = new CaseFoldCodeItem(1, 2, new int[]{'s', 'S'});
-                CaseFoldCodeItem item3 = new CaseFoldCodeItem(1, 2, new int[]{'S', 's'});
-                
-                return new CaseFoldCodeItem[]{item0, item1, item2, item3};               
-            } else if (b != 0xd7) {
-                return new CaseFoldCodeItem[]{new CaseFoldCodeItem(1, 1, new int[]{b + 0x20})};
-            }
-        } else if (0xe0 <= b && b <= 0xef) {
-            return new CaseFoldCodeItem[]{new CaseFoldCodeItem(1, 1, new int[]{b - 0x20})};
-        } else if (0xf0 <= b && b <= 0xfe) {
-            if (b != 0xf7) {
-                return new CaseFoldCodeItem[]{new CaseFoldCodeItem(1, 1, new int[]{b - 0x20})};
-            }
-        }       
-        return EMPTY_FOLD_CODES;
-    }
-    
-    static final short ISO8859_1CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0,
-        0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2        
-    };
-    
-    static final byte ISO8859_1ToLowerCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247',
-        (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257',
-        (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377'
-    }; 
-
-    static final byte ISO8859_1ToUpperCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\101', (byte)'\102', (byte)'\103', (byte)'\104', (byte)'\105', (byte)'\106', (byte)'\107',
-        (byte)'\110', (byte)'\111', (byte)'\112', (byte)'\113', (byte)'\114', (byte)'\115', (byte)'\116', (byte)'\117',
-        (byte)'\120', (byte)'\121', (byte)'\122', (byte)'\123', (byte)'\124', (byte)'\125', (byte)'\126', (byte)'\127',
-        (byte)'\130', (byte)'\131', (byte)'\132', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\101', (byte)'\102', (byte)'\103', (byte)'\104', (byte)'\105', (byte)'\106', (byte)'\107',
-        (byte)'\110', (byte)'\111', (byte)'\112', (byte)'\113', (byte)'\114', (byte)'\115', (byte)'\116', (byte)'\117',
-        (byte)'\120', (byte)'\121', (byte)'\122', (byte)'\123', (byte)'\124', (byte)'\125', (byte)'\126', (byte)'\127',
-        (byte)'\130', (byte)'\131', (byte)'\132', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247',
-        (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257',
-        (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277',
-        (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307',
-        (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317',
-        (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327',
-        (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337',
-        (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307',
-        (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317',
-        (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\367',
-        (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\377',
-    };
-    
-    static final int ISO8859_1CaseFoldMap[][] = {
-        { 0xc0, 0xe0 },
-        { 0xc1, 0xe1 },
-        { 0xc2, 0xe2 },
-        { 0xc3, 0xe3 },
-        { 0xc4, 0xe4 },
-        { 0xc5, 0xe5 },
-        { 0xc6, 0xe6 },
-        { 0xc7, 0xe7 },
-        { 0xc8, 0xe8 },
-        { 0xc9, 0xe9 },
-        { 0xca, 0xea },
-        { 0xcb, 0xeb },
-        { 0xcc, 0xec },
-        { 0xcd, 0xed },
-        { 0xce, 0xee },
-        { 0xcf, 0xef },
-
-        { 0xd0, 0xf0 },
-        { 0xd1, 0xf1 },
-        { 0xd2, 0xf2 },
-        { 0xd3, 0xf3 },
-        { 0xd4, 0xf4 },
-        { 0xd5, 0xf5 },
-        { 0xd6, 0xf6 },
-        { 0xd8, 0xf8 },
-        { 0xd9, 0xf9 },
-        { 0xda, 0xfa },
-        { 0xdb, 0xfb },
-        { 0xdc, 0xfc },
-        { 0xdd, 0xfd },
-        { 0xde, 0xfe }
-    };  
-
-    public static final ISO8859_1Encoding INSTANCE = new ISO8859_1Encoding();
-}
diff --git a/src/org/joni/encoding/specific/ISO8859_2Encoding.java b/src/org/joni/encoding/specific/ISO8859_2Encoding.java
deleted file mode 100644
index f08061b..0000000
--- a/src/org/joni/encoding/specific/ISO8859_2Encoding.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.encoding.ISOEncoding;
-
-public final class ISO8859_2Encoding extends ISOEncoding {
-
-    protected ISO8859_2Encoding() {
-        super(ISO8859_2CtypeTable, ISO8859_2ToLowerCaseTable, ISO8859_2CaseFoldMap); 
-    }
-    
-    @Override
-    public String toString() {
-        return "ISO-8859-2";
-    }
-    
-    static final short ISO8859_2CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x34a2, 0x00a0, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x00a0,
-        0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x34a2,
-        0x00a0, 0x30e2, 0x00a0, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x00a0,
-        0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0
-    };
-    
-    static final byte ISO8859_2ToLowerCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\261', (byte)'\242', (byte)'\263', (byte)'\244', (byte)'\265', (byte)'\266', (byte)'\247',
-        (byte)'\250', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\255', (byte)'\276', (byte)'\277',
-        (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377'
-    };
-    
-    static final int ISO8859_2CaseFoldMap[][] = {
-        { 0xa1, 0xb1 },
-        { 0xa3, 0xb3 },
-        { 0xa5, 0xb5 },
-        { 0xa6, 0xb6 },
-        { 0xa9, 0xb9 },
-        { 0xaa, 0xba },
-        { 0xab, 0xbb },
-        { 0xac, 0xbc },
-        { 0xae, 0xbe },
-        { 0xaf, 0xbf },
-
-        { 0xc0, 0xe0 },
-        { 0xc1, 0xe1 },
-        { 0xc2, 0xe2 },
-        { 0xc3, 0xe3 },
-        { 0xc4, 0xe4 },
-        { 0xc5, 0xe5 },
-        { 0xc6, 0xe6 },
-        { 0xc7, 0xe7 },
-        { 0xc8, 0xe8 },
-        { 0xc9, 0xe9 },
-        { 0xca, 0xea },
-        { 0xcb, 0xeb },
-        { 0xcc, 0xec },
-        { 0xcd, 0xed },
-        { 0xce, 0xee },
-        { 0xcf, 0xef },
-
-        { 0xd0, 0xf0 },
-        { 0xd1, 0xf1 },
-        { 0xd2, 0xf2 },
-        { 0xd3, 0xf3 },
-        { 0xd4, 0xf4 },
-        { 0xd5, 0xf5 },
-        { 0xd6, 0xf6 },
-        { 0xd8, 0xf8 },
-        { 0xd9, 0xf9 },
-        { 0xda, 0xfa },
-        { 0xdb, 0xfb },
-        { 0xdc, 0xfc },
-        { 0xdd, 0xfd },
-        { 0xde, 0xfe }
-    };  
-
-    public static final ISO8859_2Encoding INSTANCE = new ISO8859_2Encoding();
-}
diff --git a/src/org/joni/encoding/specific/ISO8859_3Encoding.java b/src/org/joni/encoding/specific/ISO8859_3Encoding.java
deleted file mode 100644
index 34927d9..0000000
--- a/src/org/joni/encoding/specific/ISO8859_3Encoding.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.encoding.ISOEncoding;
-
-public final class ISO8859_3Encoding extends ISOEncoding {
-
-    protected ISO8859_3Encoding() {
-        super(ISO8859_3CtypeTable, ISO8859_3ToLowerCaseTable, ISO8859_3CaseFoldMap); 
-    }
-    
-    @Override
-    public String toString() {
-        return "ISO-8859-3";
-    }
-        
-    static final short ISO8859_3CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x34a2, 0x00a0, 0x00a0, 0x00a0, 0x0000, 0x34a2, 0x00a0,
-        0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x0000, 0x34a2,
-        0x00a0, 0x30e2, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x30e2, 0x01a0,
-        0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x11a0, 0x0000, 0x30e2,
-        0x34a2, 0x34a2, 0x34a2, 0x0000, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x0000, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x0000, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x0000, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0
-    };
-
-    static final byte ISO8859_3ToLowerCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\261', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\266', (byte)'\247',
-        (byte)'\250', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\255', (byte)'\256', (byte)'\277',
-        (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\303', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\320', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377'
-    };
-    
-    static final int ISO8859_3CaseFoldMap[][] = {
-        { 0xa1, 0xb1 },
-        { 0xa6, 0xb6 },
-        { 0xa9, 0xb9 },
-        { 0xaa, 0xba },
-        { 0xab, 0xbb },
-        { 0xac, 0xbc },
-        { 0xaf, 0xbf },
-
-        { 0xc0, 0xe0 },
-        { 0xc1, 0xe1 },
-        { 0xc2, 0xe2 },
-        { 0xc4, 0xe4 },
-        { 0xc5, 0xe5 },
-        { 0xc6, 0xe6 },
-        { 0xc7, 0xe7 },
-        { 0xc8, 0xe8 },
-        { 0xc9, 0xe9 },
-        { 0xca, 0xea },
-        { 0xcb, 0xeb },
-        { 0xcc, 0xec },
-        { 0xcd, 0xed },
-        { 0xce, 0xee },
-        { 0xcf, 0xef },
-
-        { 0xd1, 0xf1 },
-        { 0xd2, 0xf2 },
-        { 0xd3, 0xf3 },
-        { 0xd4, 0xf4 },
-        { 0xd5, 0xf5 },
-        { 0xd6, 0xf6 },
-        { 0xd8, 0xf8 },
-        { 0xd9, 0xf9 },
-        { 0xda, 0xfa },
-        { 0xdb, 0xfb },
-        { 0xdc, 0xfc },
-        { 0xdd, 0xfd },
-        { 0xde, 0xfe }
-
-    };  
-
-    public static final ISO8859_3Encoding INSTANCE = new ISO8859_3Encoding();
-}
diff --git a/src/org/joni/encoding/specific/ISO8859_4Encoding.java b/src/org/joni/encoding/specific/ISO8859_4Encoding.java
deleted file mode 100644
index 3cd7a08..0000000
--- a/src/org/joni/encoding/specific/ISO8859_4Encoding.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.encoding.ISOEncoding;
-
-public final class ISO8859_4Encoding extends ISOEncoding {
-
-    protected ISO8859_4Encoding() {
-        super(ISO8859_4CtypeTable, ISO8859_4ToLowerCaseTable, ISO8859_4CaseFoldMap); 
-    }
-    
-    @Override
-    public String toString() {
-        return "ISO-8859-4";
-    }
-        
-    static final short ISO8859_4CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x34a2, 0x30e2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x00a0,
-        0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x00a0,
-        0x00a0, 0x30e2, 0x00a0, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x00a0,
-        0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x34a2, 0x30e2, 0x30e2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0
-    };
-
-    static final byte ISO8859_4ToLowerCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\261', (byte)'\242', (byte)'\263', (byte)'\244', (byte)'\265', (byte)'\266', (byte)'\247',
-        (byte)'\250', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\255', (byte)'\276', (byte)'\257',
-        (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\277', (byte)'\276', (byte)'\277',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377'
-    };
-    
-    static final int ISO8859_4CaseFoldMap[][] = {
-        { 0xa1, 0xb1 },
-        { 0xa3, 0xb3 },
-        { 0xa5, 0xb5 },
-        { 0xa6, 0xb6 },
-        { 0xa9, 0xb9 },
-        { 0xaa, 0xba },
-        { 0xab, 0xbb },
-        { 0xac, 0xbc },
-        { 0xae, 0xbe },
-
-        { 0xc0, 0xe0 },
-        { 0xc1, 0xe1 },
-        { 0xc2, 0xe2 },
-        { 0xc3, 0xe3 },
-        { 0xc4, 0xe4 },
-        { 0xc5, 0xe5 },
-        { 0xc6, 0xe6 },
-        { 0xc7, 0xe7 },
-        { 0xc8, 0xe8 },
-        { 0xc9, 0xe9 },
-        { 0xca, 0xea },
-        { 0xcb, 0xeb },
-        { 0xcc, 0xec },
-        { 0xcd, 0xed },
-        { 0xce, 0xee },
-        { 0xcf, 0xef },
-
-        { 0xd0, 0xf0 },
-        { 0xd1, 0xf1 },
-        { 0xd2, 0xf2 },
-        { 0xd3, 0xf3 },
-        { 0xd4, 0xf4 },
-        { 0xd5, 0xf5 },
-        { 0xd6, 0xf6 },
-        { 0xd8, 0xf8 },
-        { 0xd9, 0xf9 },
-        { 0xda, 0xfa },
-        { 0xdb, 0xfb },
-        { 0xdc, 0xfc },
-        { 0xdd, 0xfd },
-        { 0xde, 0xfe }
-    };  
-
-    public static final ISO8859_4Encoding INSTANCE = new ISO8859_4Encoding();
-}
diff --git a/src/org/joni/encoding/specific/ISO8859_5Encoding.java b/src/org/joni/encoding/specific/ISO8859_5Encoding.java
deleted file mode 100644
index b890b61..0000000
--- a/src/org/joni/encoding/specific/ISO8859_5Encoding.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.IntHolder;
-import org.joni.encoding.ISOEncoding;
-
-public final class ISO8859_5Encoding extends ISOEncoding {
-
-    protected ISO8859_5Encoding() {
-        super(ISO8859_5CtypeTable, ISO8859_5ToLowerCaseTable, ISO8859_5CaseFoldMap, false); 
-    }
-    
-    @Override
-    public String toString() {
-        return "ISO-8859-5";
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        int p = pp.value;
-        lower[0] = LowerCaseTable[bytes[p] & 0xff];
-        pp.value++;
-        return 1;
-    }
-
-    @Override
-    public final byte[]toLowerCaseTable() {
-        return LowerCaseTable;
-    }    
-
-    static final short ISO8859_5CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2
-    };
-
-    static final byte ISO8859_5ToLowerCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\255', (byte)'\376', (byte)'\377',
-        (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327',
-        (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327',
-        (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377'
-    };
-    
-    static final int ISO8859_5CaseFoldMap[][] = {
-        { 0xa1, 0xf1 },
-        { 0xa2, 0xf2 },
-        { 0xa3, 0xf3 },
-        { 0xa4, 0xf4 },
-        { 0xa5, 0xf5 },
-        { 0xa6, 0xf6 },
-        { 0xa7, 0xf7 },
-        { 0xa8, 0xf8 },
-        { 0xa9, 0xf9 },
-        { 0xaa, 0xfa },
-        { 0xab, 0xfb },
-        { 0xac, 0xfc },
-        { 0xae, 0xfe },
-        { 0xaf, 0xff },
-
-        { 0xb0, 0xd0 },
-        { 0xb1, 0xd1 },
-        { 0xb2, 0xd2 },
-        { 0xb3, 0xd3 },
-        { 0xb4, 0xd4 },
-        { 0xb5, 0xd5 },
-        { 0xb6, 0xd6 },
-        { 0xb7, 0xd7 },
-        { 0xb8, 0xd8 },
-        { 0xb9, 0xd9 },
-        { 0xba, 0xda },
-        { 0xbb, 0xdb },
-        { 0xbc, 0xdc },
-        { 0xbd, 0xdd },
-        { 0xbe, 0xdf },
-        { 0xbf, 0xdf },
-
-        { 0xc0, 0xe0 },
-        { 0xc1, 0xe1 },
-        { 0xc2, 0xe2 },
-        { 0xc3, 0xe3 },
-        { 0xc4, 0xe4 },
-        { 0xc5, 0xe5 },
-        { 0xc6, 0xe6 },
-        { 0xc7, 0xe7 },
-        { 0xc8, 0xe8 },
-        { 0xc9, 0xe9 },
-        { 0xca, 0xea },
-        { 0xcb, 0xeb },
-        { 0xcc, 0xec },
-        { 0xcd, 0xed },
-        { 0xce, 0xee },
-        { 0xcf, 0xef }        
-    };  
-
-    public static final ISO8859_5Encoding INSTANCE = new ISO8859_5Encoding();
-}
diff --git a/src/org/joni/encoding/specific/ISO8859_6Encoding.java b/src/org/joni/encoding/specific/ISO8859_6Encoding.java
deleted file mode 100644
index 5725b8f..0000000
--- a/src/org/joni/encoding/specific/ISO8859_6Encoding.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.ApplyAllCaseFoldFunction;
-import org.joni.CaseFoldCodeItem;
-import org.joni.IntHolder;
-import org.joni.encoding.ISOEncoding;
-
-public final class ISO8859_6Encoding extends ISOEncoding {
-
-    protected ISO8859_6Encoding() {
-        super(ISO8859_6CtypeTable, ASCIIEncoding.AsciiToLowerCaseTable, null); 
-    }
-    
-    @Override
-    public String toString() {
-        return "ISO-8859-6";
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        return asciiMbcCaseFold(flag, bytes, pp, end, lower);
-    }
-
-    @Override
-    public final byte[]toLowerCaseTable() {
-        return LowerCaseTable;
-    }
-    
-    @Override
-    public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) {
-        asciiApplyAllCaseFold(flag, fun, arg);
-    }
-    
-    @Override
-    public CaseFoldCodeItem[]caseFoldCodesByString(int flag, byte[]bytes, int p, int end) {
-        return asciiCaseFoldCodesByString(flag, bytes, p, end);
-    }    
-        
-    static final short ISO8859_6CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x0000, 0x0000, 0x0000, 0x00a0, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x01a0, 0x01a0, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x01a0, 0x0000, 0x0000, 0x0000, 0x01a0,
-        0x0000, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
-    };
-
-    public static final ISO8859_6Encoding INSTANCE = new ISO8859_6Encoding();
-}
diff --git a/src/org/joni/encoding/specific/ISO8859_7Encoding.java b/src/org/joni/encoding/specific/ISO8859_7Encoding.java
deleted file mode 100644
index fefd90e..0000000
--- a/src/org/joni/encoding/specific/ISO8859_7Encoding.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.IntHolder;
-import org.joni.encoding.ISOEncoding;
-
-public final class ISO8859_7Encoding extends ISOEncoding {
-
-    protected ISO8859_7Encoding() {
-        super(ISO8859_7CtypeTable, ISO8859_7ToLowerCaseTable, ISO8859_7CaseFoldMap, false); 
-    }
-    
-    @Override
-    public String toString() {
-        return "ISO-8859-7";
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        int p = pp.value;
-        lower[0] = LowerCaseTable[bytes[p] & 0xff];
-        pp.value++;
-        return 1;
-    }
-    
-    @Override
-    public final byte[]toLowerCaseTable() {
-        return LowerCaseTable;
-    }
-
-    static final short ISO8859_7CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x01a0, 0x01a0, 0x00a0, 0x0000, 0x0000, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x0000, 0x01a0, 0x00a0, 0x01a0, 0x0000, 0x01a0,
-        0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x00a0, 0x34a2, 0x01a0,
-        0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x10a0, 0x34a2, 0x34a2,
-        0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x0000, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x0000
-    };
-
-    static final byte ISO8859_7ToLowerCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247',
-        (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257',
-        (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\334', (byte)'\267',
-        (byte)'\335', (byte)'\336', (byte)'\337', (byte)'\273', (byte)'\374', (byte)'\275', (byte)'\375', (byte)'\376',
-        (byte)'\300', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\322', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377'
-    };
-    
-    static final int ISO8859_7CaseFoldMap[][] = {
-        { 0xb6, 0xdc },
-        { 0xb8, 0xdd },
-        { 0xb9, 0xde },
-        { 0xba, 0xdf },
-        { 0xbc, 0xfc },
-        { 0xbe, 0xfd },
-        { 0xbf, 0xfe },
-
-        { 0xc1, 0xe1 },
-        { 0xc2, 0xe2 },
-        { 0xc3, 0xe3 },
-        { 0xc4, 0xe4 },
-        { 0xc5, 0xe5 },
-        { 0xc6, 0xe6 },
-        { 0xc7, 0xe7 },
-        { 0xc8, 0xe8 },
-        { 0xc9, 0xe9 },
-        { 0xca, 0xea },
-        { 0xcb, 0xeb },
-        { 0xcc, 0xec },
-        { 0xcd, 0xed },
-        { 0xce, 0xee },
-        { 0xcf, 0xef },
-
-        { 0xd0, 0xf0 },
-        { 0xd1, 0xf1 },
-        { 0xd2, 0xf2 },
-        { 0xd3, 0xf3 },
-        { 0xd4, 0xf4 },
-        { 0xd5, 0xf5 },
-        { 0xd6, 0xf6 },
-        { 0xd7, 0xf7 },
-        { 0xd8, 0xf8 },
-        { 0xd9, 0xf9 },
-        { 0xda, 0xfa },
-        { 0xdb, 0xfb }        
-    };  
-
-    public static final ISO8859_7Encoding INSTANCE = new ISO8859_7Encoding();
-}
diff --git a/src/org/joni/encoding/specific/ISO8859_8Encoding.java b/src/org/joni/encoding/specific/ISO8859_8Encoding.java
deleted file mode 100644
index ed69078..0000000
--- a/src/org/joni/encoding/specific/ISO8859_8Encoding.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.ApplyAllCaseFoldFunction;
-import org.joni.CaseFoldCodeItem;
-import org.joni.IntHolder;
-import org.joni.encoding.ISOEncoding;
-
-public final class ISO8859_8Encoding extends ISOEncoding {
-
-    protected ISO8859_8Encoding() {
-        super(ISO8859_8CtypeTable, ASCIIEncoding.AsciiToLowerCaseTable, null); 
-    }
-    
-    @Override
-    public String toString() {
-        return "ISO-8859-8";
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        return asciiMbcCaseFold(flag, bytes, pp, end, lower);
-    }
-    
-    @Override
-    public final byte[]toLowerCaseTable() {
-        return LowerCaseTable;
-    }
-    
-    @Override
-    public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) {
-        asciiApplyAllCaseFold(flag, fun, arg);
-    }
-    
-    @Override
-    public CaseFoldCodeItem[]caseFoldCodesByString(int flag, byte[]bytes, int p, int end) {
-        return asciiCaseFoldCodesByString(flag, bytes, p, end);
-    }    
-        
-    static final short ISO8859_8CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x0000, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x00a0, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0,
-        0x00a0, 0x10a0, 0x00a0, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01a0,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2,
-        0x30a2, 0x30a2, 0x30a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
-    };
-
-    public static final ISO8859_8Encoding INSTANCE = new ISO8859_8Encoding();
-}
diff --git a/src/org/joni/encoding/specific/ISO8859_9Encoding.java b/src/org/joni/encoding/specific/ISO8859_9Encoding.java
deleted file mode 100644
index a715a4f..0000000
--- a/src/org/joni/encoding/specific/ISO8859_9Encoding.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.encoding.ISOEncoding;
-
-public final class ISO8859_9Encoding extends ISOEncoding {
-
-    protected ISO8859_9Encoding() {
-        super(ISO8859_9CtypeTable, ISO8859_9ToLowerCaseTable, ISO8859_9CaseFoldMap); 
-    }
-    
-    @Override
-    public String toString() {
-        return "ISO-8859-9";
-    }
-        
-    static final short ISO8859_9CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0,
-        0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2
-    };
-
-    static final byte ISO8859_9ToLowerCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247',
-        (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257',
-        (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\335', (byte)'\376', (byte)'\337',
-        (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347',
-        (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357',
-        (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367',
-        (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377'
-    };
-    
-    static final int ISO8859_9CaseFoldMap[][] = {
-        { 0xc0, 0xe0 },
-        { 0xc1, 0xe1 },
-        { 0xc2, 0xe2 },
-        { 0xc3, 0xe3 },
-        { 0xc4, 0xe4 },
-        { 0xc5, 0xe5 },
-        { 0xc6, 0xe6 },
-        { 0xc7, 0xe7 },
-        { 0xc8, 0xe8 },
-        { 0xc9, 0xe9 },
-        { 0xca, 0xea },
-        { 0xcb, 0xeb },
-        { 0xcc, 0xec },
-        { 0xcd, 0xed },
-        { 0xce, 0xee },
-        { 0xcf, 0xef },
-
-        { 0xd0, 0xf0 },
-        { 0xd1, 0xf1 },
-        { 0xd2, 0xf2 },
-        { 0xd3, 0xf3 },
-        { 0xd4, 0xf4 },
-        { 0xd5, 0xf5 },
-        { 0xd6, 0xf6 },
-        { 0xd8, 0xf8 },
-        { 0xd9, 0xf9 },
-        { 0xda, 0xfa },
-        { 0xdb, 0xfb },
-        { 0xdc, 0xfc },
-        { 0xdd, 0xfd },
-        { 0xde, 0xfe }
-    };  
-
-    public static final ISO8859_9Encoding INSTANCE = new ISO8859_9Encoding();
-}
diff --git a/src/org/joni/encoding/specific/KOI8Encoding.java b/src/org/joni/encoding/specific/KOI8Encoding.java
deleted file mode 100644
index d4c5d5f..0000000
--- a/src/org/joni/encoding/specific/KOI8Encoding.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.IntHolder;
-import org.joni.encoding.CaseFoldMapEncoding;
-
-final public class KOI8Encoding extends CaseFoldMapEncoding {
-
-    protected KOI8Encoding() {
-        super(KOI8_CtypeTable, KOI8_ToLowerCaseTable, KOI8_CaseFoldMap, false);
-    }
-    
-    @Override
-    public String toString() {
-        return "KOI8";
-    }
-    
-    private static final int ENC_CASE_FOLD_ASCII_CASE           = 0; 
-    private static final int ONIGENC_CASE_FOLD_NONASCII_CASE    = 0;
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        int p = pp.value;
-        int lowerP = 0;
-
-        if (((flag & ENC_CASE_FOLD_ASCII_CASE) !=0 && isAscii(bytes[p] & 0xff)) ||
-            ((flag & ONIGENC_CASE_FOLD_NONASCII_CASE) !=0 && !isAscii(bytes[p] & 0xff))) {
-                lower[lowerP] = LowerCaseTable[bytes[p] & 0xff];
-        } else {
-            lower[lowerP] = bytes[p];
-        }
-        
-        pp.value++;
-        return 1; /* return byte length of converted char to lower */
-    }
-    
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        return code < 256 ? isCodeCTypeInternal(code, ctype) : false;
-    }
-    
-    static final short KOI8_CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-        0x0284, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2
-    };
-    
-    static final byte KOI8_ToLowerCaseTable[] = new byte[]{
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247',
-        (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257',
-        (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277',
-        (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307',
-        (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317',
-        (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327',
-        (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337',
-        (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307',
-        (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317',
-        (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327',
-        (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337'
-    };
-    
-    static final int KOI8_CaseFoldMap[][] = {
-        { 0xc0, 0xe0 },
-        { 0xc1, 0xe1 },
-        { 0xc2, 0xe2 },
-        { 0xc3, 0xe3 },
-        { 0xc4, 0xe4 },
-        { 0xc5, 0xe5 },
-        { 0xc6, 0xe6 },
-        { 0xc7, 0xe7 },
-        { 0xc8, 0xe8 },
-        { 0xc9, 0xe9 },
-        { 0xca, 0xea },
-        { 0xcb, 0xeb },
-        { 0xcc, 0xec },
-        { 0xcd, 0xed },
-        { 0xce, 0xee },
-        { 0xcf, 0xef },
-
-        { 0xd0, 0xf0 },
-        { 0xd1, 0xf1 },
-        { 0xd2, 0xf2 },
-        { 0xd3, 0xf3 },
-        { 0xd4, 0xf4 },
-        { 0xd5, 0xf5 },
-        { 0xd6, 0xf6 },
-        { 0xd7, 0xf7 },
-        { 0xd8, 0xf8 },
-        { 0xd9, 0xf9 },
-        { 0xda, 0xfa },
-        { 0xdb, 0xfb },
-        { 0xdc, 0xfc },
-        { 0xdd, 0xfd },
-        { 0xde, 0xfe },
-        { 0xdf, 0xff },
-
-        { 0xe0, 0xc0 },
-        { 0xe1, 0xc1 },
-        { 0xe2, 0xc2 },
-        { 0xe3, 0xc3 },
-        { 0xe4, 0xc4 },
-        { 0xe5, 0xc5 },
-        { 0xe6, 0xc6 },
-        { 0xe7, 0xc7 },
-        { 0xe8, 0xc8 },
-        { 0xe9, 0xc9 },
-        { 0xea, 0xca },
-        { 0xeb, 0xcb },
-        { 0xec, 0xcc },
-        { 0xed, 0xcd },
-        { 0xee, 0xce },
-        { 0xef, 0xcf },
-
-        { 0xf0, 0xd0 },
-        { 0xf1, 0xd1 },
-        { 0xf2, 0xd2 },
-        { 0xf3, 0xd3 },
-        { 0xf4, 0xd4 },
-        { 0xf5, 0xd5 },
-        { 0xf6, 0xd6 },
-        { 0xf7, 0xd7 },
-        { 0xf8, 0xd8 },
-        { 0xf9, 0xd9 },
-        { 0xfa, 0xda },
-        { 0xfb, 0xdb },
-        { 0xfc, 0xdc },
-        { 0xfe, 0xde },
-        { 0xff, 0xdf }
-    };
-    
-    public static final KOI8Encoding INSTANCE = new KOI8Encoding();
-}
diff --git a/src/org/joni/encoding/specific/KOI8REncoding.java b/src/org/joni/encoding/specific/KOI8REncoding.java
deleted file mode 100644
index a1c3de3..0000000
--- a/src/org/joni/encoding/specific/KOI8REncoding.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.IntHolder;
-import org.joni.encoding.CaseFoldMapEncoding;
-
-final public class KOI8REncoding extends CaseFoldMapEncoding {
-
-    protected KOI8REncoding() {
-        super(KOI8R_CtypeTable, KOI8R_ToLowerCaseTable, KOI8R_CaseFoldMap, false);
-    }
-    
-    @Override
-    public String toString() {
-        return "KOI8-R";
-    }
-
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        int p = pp.value;
-        int lowerP = 0;
-
-        lower[lowerP] = LowerCaseTable[bytes[p] & 0xff];
-        pp.value++;
-        return 1;
-    }
-
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        return code < 256 ? isCodeCTypeInternal(code, ctype) : false;
-    }
-    
-    static final short KOI8R_CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x0284, 0x00a0, 0x00a0, 0x10a0, 0x01a0, 0x00a0,
-        0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x00a0, 0x34a2, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2
-    };
-    
-    static final byte KOI8R_ToLowerCaseTable[] = {
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247',
-        (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257',
-        (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\243', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277',
-        (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307',
-        (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317',
-        (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327',
-        (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337',
-        (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307',
-        (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317',
-        (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327',
-        (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337'
-    };
-    
-    static final int KOI8R_CaseFoldMap[][] = {
-        { 0xa3, 0xb3 },
-
-        { 0xc0, 0xe0 },
-        { 0xc1, 0xe1 },
-        { 0xc2, 0xe2 },
-        { 0xc3, 0xe3 },
-        { 0xc4, 0xe4 },
-        { 0xc5, 0xe5 },
-        { 0xc6, 0xe6 },
-        { 0xc7, 0xe7 },
-        { 0xc8, 0xe8 },
-        { 0xc9, 0xe9 },
-        { 0xca, 0xea },
-        { 0xcb, 0xeb },
-        { 0xcc, 0xec },
-        { 0xcd, 0xed },
-        { 0xce, 0xee },
-        { 0xcf, 0xef },
-
-        { 0xd0, 0xf0 },
-        { 0xd1, 0xf1 },
-        { 0xd2, 0xf2 },
-        { 0xd3, 0xf3 },
-        { 0xd4, 0xf4 },
-        { 0xd5, 0xf5 },
-        { 0xd6, 0xf6 },
-        { 0xd7, 0xf7 },
-        { 0xd8, 0xf8 },
-        { 0xd9, 0xf9 },
-        { 0xda, 0xfa },
-        { 0xdb, 0xfb },
-        { 0xdc, 0xfc },
-        { 0xdd, 0xfd },
-        { 0xde, 0xfe },
-        { 0xdf, 0xff }
-    };
-    
-    public static final KOI8REncoding INSTANCE = new KOI8REncoding();
-}
diff --git a/src/org/joni/encoding/specific/KOI8UEncoding.java b/src/org/joni/encoding/specific/KOI8UEncoding.java
deleted file mode 100644
index 0a9db99..0000000
--- a/src/org/joni/encoding/specific/KOI8UEncoding.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.IntHolder;
-import org.joni.encoding.CaseFoldMapEncoding;
-
-final public class KOI8UEncoding extends CaseFoldMapEncoding {
-
-    protected KOI8UEncoding() {
-        super(KOI8U_CtypeTable, KOI8U_ToLowerCaseTable, KOI8U_CaseFoldMap, false);
-    }
-    
-    @Override
-    public String toString() {
-        return "KOI8-U";
-    }
-
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        int p = pp.value;
-        int lowerP = 0;
-
-        lower[lowerP] = LowerCaseTable[bytes[p] & 0xff];
-        pp.value++;
-        return 1;
-    }
-    
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        return code < 256 ? isCodeCTypeInternal(code, ctype) : false;
-    }
-    
-    static final short KOI8U_CtypeTable[] = {
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-        0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-        0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-        0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-        0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-        0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-        0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-        0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x0284, 0x00a0, 0x00a0, 0x10a0, 0x01a0, 0x00a0,
-        0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2,
-        0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x00a0, 0x00a0,
-        0x00a0, 0x00a0, 0x00a0, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2,
-        0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x34a2, 0x00a0, 0x00a0,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-        0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2
-    };
-    
-    static final byte KOI8U_ToLowerCaseTable[] = {
-        (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007',
-        (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017',
-        (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027',
-        (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037',
-        (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047',
-        (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057',
-        (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067',
-        (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077',
-        (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137',
-        (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147',
-        (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157',
-        (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167',
-        (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177',
-        (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207',
-        (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217',
-        (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227',
-        (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237',
-        (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247',
-        (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257',
-        (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\243', (byte)'\244', (byte)'\265', (byte)'\246', (byte)'\247',
-        (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\255', (byte)'\276', (byte)'\277',
-        (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307',
-        (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317',
-        (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327',
-        (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337',
-        (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307',
-        (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317',
-        (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327',
-        (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337'
-    };
-    
-    static final int KOI8U_CaseFoldMap[][] = {
-        { 0xa3, 0xb3 },
-        { 0xa4, 0xb4 },
-        { 0xa6, 0xb6 },
-        { 0xa7, 0xb7 },
-        { 0xad, 0xbd },
-
-        { 0xc0, 0xe0 },
-        { 0xc1, 0xe1 },
-        { 0xc2, 0xe2 },
-        { 0xc3, 0xe3 },
-        { 0xc4, 0xe4 },
-        { 0xc5, 0xe5 },
-        { 0xc6, 0xe6 },
-        { 0xc7, 0xe7 },
-        { 0xc8, 0xe8 },
-        { 0xc9, 0xe9 },
-        { 0xca, 0xea },
-        { 0xcb, 0xeb },
-        { 0xcc, 0xec },
-        { 0xcd, 0xed },
-        { 0xce, 0xee },
-        { 0xcf, 0xef },
-
-        { 0xd0, 0xf0 },
-        { 0xd1, 0xf1 },
-        { 0xd2, 0xf2 },
-        { 0xd3, 0xf3 },
-        { 0xd4, 0xf4 },
-        { 0xd5, 0xf5 },
-        { 0xd6, 0xf6 },
-        { 0xd7, 0xf7 },
-        { 0xd8, 0xf8 },
-        { 0xd9, 0xf9 },
-        { 0xda, 0xfa },
-        { 0xdb, 0xfb },
-        { 0xdc, 0xfc },
-        { 0xdd, 0xfd },
-        { 0xde, 0xfe },
-        { 0xdf, 0xff }      
-    };
-
-    public static final KOI8UEncoding INSTANCE = new KOI8UEncoding();
-}
diff --git a/src/org/joni/encoding/specific/SJISEncoding.java b/src/org/joni/encoding/specific/SJISEncoding.java
deleted file mode 100644
index de45f2d..0000000
--- a/src/org/joni/encoding/specific/SJISEncoding.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.CodeRangeBuffer;
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.constants.CharacterType;
-import org.joni.encoding.CanBeTrailTableEncoding;
-import org.joni.exception.ErrorMessages;
-import org.joni.exception.InternalException;
-import org.joni.exception.ValueException;
-import org.joni.util.BytesHash;
-
-public final class SJISEncoding extends CanBeTrailTableEncoding {
-
-    protected SJISEncoding() {
-        super(1, 2, SjisEncLen, SjisTrans, ASCIIEncoding.AsciiCtypeTable, SJIS_CAN_BE_TRAIL_TABLE);
-    }
-
-    @Override
-    public String toString() {
-        return "Shift_JIS";
-    }
-
-    @Override
-    public int length(byte[]bytes, int p, int end) {
-        if (Config.VANILLA) {
-            return length(bytes[p]);
-        } else {
-            return safeLengthForUptoTwo(bytes, p, end);
-        }
-    }
-
-    @Override
-    public int mbcToCode(byte[]bytes, int p, int end) {
-        return mbnMbcToCode(bytes, p, end);
-    }
-    
-    @Override
-    public int codeToMbcLength(int code) {
-        if (code < 256) {
-            return SjisEncLen[code] == 1 ? 1 : 0;
-        } else if (code <= 0xffff) {
-            return 2;
-        } else {
-            throw new ValueException(ErrorMessages.ERR_INVALID_CODE_POINT_VALUE);            
-        }
-    }
-
-    @Override
-    public int codeToMbc(int code, byte[]bytes, int p) {
-        int p_ = p;
-        if ((code & 0xff00) != 0) bytes[p_++] = (byte)(((code >>  8) & 0xff));
-        bytes[p_++] = (byte)(code & 0xff);
-        return p_ - p;
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        return mbnMbcCaseFold(flag, bytes, pp, end, lower);
-    }
-    
-    private static final int CR_Hiragana[] = {
-        1,
-        0x829f, 0x82f1
-    }; /* CR_Hiragana */
-    
-    private static final int CR_Katakana[] = {
-        4,
-        0x00a6, 0x00af,
-        0x00b1, 0x00dd,
-        0x8340, 0x837e,
-        0x8380, 0x8396,
-    }; /* CR_Katakana */
-    
-    private static final int PropertyList[][] = new int[][] {
-        CR_Hiragana,
-        CR_Katakana
-    };
-    
-    private static final BytesHash<Integer> CTypeNameHash = new BytesHash<Integer>();
-
-    static {
-        CTypeNameHash.put("Hiragana".getBytes(), 1 + CharacterType.MAX_STD_CTYPE);
-        CTypeNameHash.put("Katakana".getBytes(), 2 + CharacterType.MAX_STD_CTYPE);        
-    }
-    
-    @Override
-    public int propertyNameToCType(byte[]bytes, int p, int end) {
-        Integer ctype;
-        if ((ctype = CTypeNameHash.get(bytes, p, end)) == null) {
-            return super.propertyNameToCType(bytes, p, end);
-        }
-        return ctype;
-    }
-    
-    
-    @Override
-    public boolean isCodeCType(int code, int ctype) {
-        if (ctype <= CharacterType.MAX_STD_CTYPE) {
-            if (code < 128) { 
-                // ctype table is configured with ASCII
-                return isCodeCTypeInternal(code, ctype);
-            } else {
-                if (isWordGraphPrint(ctype)) {
-                    if (Config.VANILLA) {
-                        return codeToMbcLength(code) > 1;
-                    } else {
-                        return true;
-                    }
-                }
-            }
-        } else {
-            ctype -= (CharacterType.MAX_STD_CTYPE + 1);
-            if (ctype >= PropertyList.length) throw new InternalException(ErrorMessages.ERR_TYPE_BUG);
-            return CodeRangeBuffer.isInCodeRange(PropertyList[ctype], code);
-        }
-        return false;        
-    }
-    
-    @Override 
-    public int[]ctypeCodeRange(int ctype, IntHolder sbOut) {
-        if (ctype <= CharacterType.MAX_STD_CTYPE) {
-            return null;
-        } else {
-            sbOut.value = 0x80;
-            
-            ctype -= (CharacterType.MAX_STD_CTYPE + 1);
-            if (ctype >= PropertyList.length) throw new InternalException(ErrorMessages.ERR_TYPE_BUG);
-            return PropertyList[ctype];
-        }
-    }    
-
-    static final boolean SJIS_CAN_BE_TRAIL_TABLE[] = {
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
-        true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false
-    };
-    
-    static final int SjisEncLen[] = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1
-    };
-    
-    private static final int SjisTrans[][] = Config.VANILLA ? null : new int[][]{
-        { /* S0   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 8 */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* a */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F, F, F
-        },
-        { /* S1   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F,
-          /* 8 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, F, F, F
-        }
-    };
-    
-    public static final SJISEncoding INSTANCE = new SJISEncoding();
-}
diff --git a/src/org/joni/encoding/specific/UTF16BEEncoding.java b/src/org/joni/encoding/specific/UTF16BEEncoding.java
deleted file mode 100644
index 71e2f97..0000000
--- a/src/org/joni/encoding/specific/UTF16BEEncoding.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.encoding.unicode.UnicodeEncoding;
-import org.joni.exception.IllegalCharacterException;
-
-public final class UTF16BEEncoding extends UnicodeEncoding {
-
-    protected UTF16BEEncoding() {
-        super(2, 4, UTF16EncLen);
-    }
-    
-    @Override
-    public String toString() {
-        return "UTF-16BE";
-    }
-    
-    @Override
-    public int length(byte[]bytes, int p, int end) {
-        if (Config.VANILLA) {
-            return length(bytes[p]);
-        } else {
-            int b = bytes[p] & 0xff;
-            if (!isSurrogate(b)) {
-                return end - p >= 2 ? 2 : 1;
-            }
-            if (isSurrogateFirst(b)) {
-                switch (end - p) {   
-                case 1:     return -3;
-                case 2:     return -2;
-                case 3:     if (isSurrogateSecond(bytes[2] & 0xff)) return -1;
-                default:    if (isSurrogateSecond(bytes[2] & 0xff)) return -4;
-                }
-            }
-        }
-        throw IllegalCharacterException.INSTANCE;
-    }
-
-    @Override
-    public boolean isNewLine(byte[]bytes, int p, int end) {
-        if (p + 1 < end) {
-            if (bytes[p + 1] == (byte)0x0a && bytes[p] == (byte)0x00) return true;
-            
-            if (Config.USE_UNICODE_ALL_LINE_TERMINATORS) {
-                if ((!Config.USE_CRNL_AS_LINE_TERMINATOR && bytes[p+1] == (byte)0x0d) ||
-                        bytes[p+1] == (byte)0x85 && bytes[p] == (byte)0x00) return true;
-                
-                if (bytes[p] == (byte)0x20 && (bytes[p+1] == (byte)0x29 || bytes[p+1] == (byte)0x28)) return true;
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public int mbcToCode(byte[]bytes, int p, int end) {
-        int code;
-        if (isSurrogateFirst(bytes[p] & 0xff)) {
-            code = ((((bytes[p + 0] & 0xff - 0xd8) << 2) +
-                     ((bytes[p + 1] & 0xff & 0xc0) >> 6) + 1) << 16) +
-                   ((((bytes[p + 1] & 0xff & 0x3f) << 2) +
-                      (bytes[p + 2] & 0xff - 0xdc)) << 8) +
-                       bytes[p + 3] & 0xff;
-        } else {
-            code =  (bytes[p + 0] & 0xff) * 256 + (bytes[p + 1] & 0xff);
-        }
-        return code;
-    }
-    
-    @Override
-    public int codeToMbcLength(int code) {
-        return code > 0xffff ? 4 : 2; 
-    }
-    
-    @Override
-    public int codeToMbc(int code, byte[]bytes, int p) {    
-        int p_ = p;
-        if (code > 0xffff) {
-            if (Config.VANILLA) {
-                int plane = code >>> 16;
-                bytes[p_++] = (byte)((plane >>> 2) + 0xd8);
-                int high = (code & 0xff00) >>> 8;
-                bytes[p_++] = (byte)(((plane & 0x03) << 6) + (high >>> 2));
-                bytes[p_++] = (byte)((high & 0x02) + 0xdc);
-                bytes[p_]   = (byte)(code & 0xff);
-            } else {
-                int high = (code >>> 10) + 0xd7c0;
-                int low = (code & 0x3ff) + 0xdc00;
-                bytes[p_++] = (byte)((high >>> 8) & 0xff);
-                bytes[p_++] = (byte)(high & 0xff);
-                bytes[p_++] = (byte)((low >>> 8) & 0xff);
-                bytes[p_]   = (byte)(low & 0xff);
-            }
-            return 4;
-        } else {
-            bytes[p_++] = (byte)((code & 0xff00) >>> 8);
-            bytes[p_++] = (byte)(code & 0xff);
-            return 2;
-        }
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]fold) {
-        int p = pp.value;
-        int foldP = 0;
-
-        if (isAscii(bytes[p+1] & 0xff) && bytes[p] == 0) {
-            p++;
-            
-            if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI) {
-                if ((flag & Config.ENC_CASE_FOLD_TURKISH_AZERI) != 0) {
-                    if (bytes[p] == (byte)0x49) {
-                        fold[foldP++] = (byte)0x01;
-                        fold[foldP] = (byte)0x31;
-                        pp.value += 2;
-                        return 2;
-                    }
-                }
-            } // USE_UNICODE_CASE_FOLD_TURKISH_AZERI
-            
-            fold[foldP++] = 0;
-            fold[foldP] = ASCIIEncoding.AsciiToLowerCaseTable[bytes[p] & 0xff];
-            pp.value += 2;
-            return 2;
-        } else {
-            return super.mbcCaseFold(flag, bytes, pp, end, fold);
-        }
-    }
-
-    /** onigenc_utf16_32_get_ctype_code_range
-     */
-    @Override
-    public int[]ctypeCodeRange(int ctype, IntHolder sbOut) {
-        sbOut.value = 0x00;
-        return super.ctypeCodeRange(ctype);
-    }
-    
-    @Override
-    public int leftAdjustCharHead(byte[]bytes, int p, int end) {
-        if (end <= p) return end;
-        
-        if ((end - p) % 2 == 1) end--;
-        
-        if (isSurrogateSecond(bytes[end] & 0xff) && end > p + 1) end -= 2;
-        
-        return end;
-    }
-    
-    @Override
-    public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) {
-        return false;
-    }
-    
-    static final int UTF16EncLen[] = {
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
-    };
-
-    private static boolean isSurrogateFirst(int c) {
-        if (Config.VANILLA) {
-            return c >= 0xd8 && c <= 0xdb;
-        } else {
-            return (c & 0xfc) == 0xd8;
-        }
-    }
-
-    private static boolean isSurrogateSecond(int c) {
-        if (Config.VANILLA) {
-            return c >= 0xdc && c <= 0xdf;
-        } else {
-            return (c & 0xfc) == 0xdc;
-        }
-    }    
-
-    private static boolean isSurrogate(int c) {
-        if (Config.VANILLA) {
-            return (c & 0xf8) == 0;
-        } else {
-            return (c & 0xf8) == 0xd8;
-        }
-        
-    }
-    
-    public static final UTF16BEEncoding INSTANCE = new UTF16BEEncoding();
-}
diff --git a/src/org/joni/encoding/specific/UTF16LEEncoding.java b/src/org/joni/encoding/specific/UTF16LEEncoding.java
deleted file mode 100644
index 7781eab..0000000
--- a/src/org/joni/encoding/specific/UTF16LEEncoding.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.encoding.unicode.UnicodeEncoding;
-import org.joni.exception.IllegalCharacterException;
-
-public final class UTF16LEEncoding extends UnicodeEncoding {
-
-    protected UTF16LEEncoding() {
-        super(2, 4, UTF16BEEncoding.UTF16EncLen);
-    }
-
-    @Override
-    public int length(byte c) { 
-        return EncLen[(c & 0xff) + 1];       
-    }
-    
-    @Override
-    public int length(byte[]bytes, int p, int end) {
-        if (Config.VANILLA) {
-            return length(bytes[p]);
-        } else {
-            int length = end - p;
-            if (length < 2) return -1;
-
-            int b = bytes[p] & 0xff;
-            if (!isSurrogate(b)) return 2;
-
-            if (isSurrogateFirst(b)) {
-                if (length < 4) return -(4 - length);
-                if (isSurrogateSecond(bytes[p + 3] & 0xff)) return 4;
-            }
-            throw IllegalCharacterException.INSTANCE;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return "UTF-16LE";
-    }
-
-    @Override
-    public boolean isNewLine(byte[]bytes, int p, int end) {
-        if (p + 1 < end) {
-            if (bytes[p] == (byte)0x0a && bytes[p + 1] == (byte)0x00) return true;
-            
-            if (Config.USE_UNICODE_ALL_LINE_TERMINATORS) {
-                if ((!Config.USE_CRNL_AS_LINE_TERMINATOR && bytes[p] == (byte)0x0d) ||
-                        bytes[p] == (byte)0x85 && bytes[p + 1] == (byte)0x00) return true;
-                
-                if (bytes[p + 1] == (byte)0x20 && (bytes[p] == (byte)0x29 || bytes[p] == (byte)0x28)) return true;
-            }
-        }
-        return false;
-    }
-    
-    @Override
-    public int mbcToCode(byte[]bytes, int p, int end) {
-        int code;
-        if (isSurrogateFirst(bytes[p + 1] & 0xff)) {
-            code = ((((bytes[p + 1] & 0xff - 0xd8) << 2) +
-                     ((bytes[p + 0] & 0xff & 0xc0) >> 6) + 1) << 16) +
-                   ((((bytes[p + 0] & 0xff & 0x3f) << 2) +
-                      (bytes[p + 2] & 0xff - 0xdc)) << 8) +
-                       bytes[p + 3] & 0xff;
-        } else {
-            code =  (bytes[p + 1] & 0xff) * 256 + (bytes[p + 0] & 0xff);
-        }
-        return code;
-    }
-    
-    @Override
-    public int codeToMbcLength(int code) {
-        return code > 0xffff ? 4 : 2; 
-    }
-    
-    @Override    
-    public int codeToMbc(int code, byte[]bytes, int p) {    
-        int p_ = p;
-        if (code > 0xffff) {
-            if (Config.VANILLA) {
-                int plane = code >>> 16;
-                int high = (code & 0xff00) >>> 8;
-                bytes[p_++] = (byte)(((plane & 0x03) << 6) + (high >>> 2));
-                bytes[p_++] = (byte)((plane >>> 2) + 0xd8);
-                bytes[p_++] = (byte)(code & 0xff);
-                bytes[p_  ] = (byte)((high & 0x02) + 0xdc);
-            } else {
-                int high = (code >>> 10) + 0xd7c0;
-                int low = (code & 0x3ff) + 0xdc00;
-                bytes[p_++] = (byte)(high & 0xff);
-                bytes[p_++] = (byte)((high >>> 8) & 0xff);
-                bytes[p_++] = (byte)(low & 0xff);
-                bytes[p_]   = (byte)((low >>> 8) & 0xff);
-            }
-            return 4;
-        } else {
-            bytes[p_++] = (byte)(code & 0xff);
-            bytes[p_++] = (byte)((code & 0xff00) >>> 8);
-            return 2;
-        }
-    }
-    
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]fold) {
-        int p = pp.value;
-        int foldP = 0;
-
-        if (isAscii(bytes[p] & 0xff) && bytes[p + 1] == 0) {
-
-            if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI) {
-                if ((flag & Config.ENC_CASE_FOLD_TURKISH_AZERI) != 0) {
-                    if (bytes[p] == (byte)0x49) {
-                        fold[foldP++] = (byte)0x01;
-                        fold[foldP] = (byte)0x31;
-                        pp.value += 2;
-                        return 2;
-                    }
-                }
-            } // USE_UNICODE_CASE_FOLD_TURKISH_AZERI            
-            
-            fold[foldP++] = ASCIIEncoding.AsciiToLowerCaseTable[bytes[p] & 0xff];
-            fold[foldP] = 0;
-            pp.value += 2;
-            return 2;
-        } else {
-            return super.mbcCaseFold(flag, bytes, pp, end, fold);
-        }
-    }
-
-    /** onigenc_utf16_32_get_ctype_code_range
-     */
-    @Override
-    public int[]ctypeCodeRange(int ctype, IntHolder sbOut) {
-        sbOut.value = 0x00;
-        return super.ctypeCodeRange(ctype);
-    }
-    
-    @Override
-    public int leftAdjustCharHead(byte[]bytes, int p, int end) {
-        if (end <= p) return end;
-        
-        if ((end - p) % 2 == 1) end--;
-        
-        if (isSurrogateSecond(bytes[end + 1] & 0xff) && end > p + 1) end -= 2;
-        
-        return end;
-    }
-    
-    @Override
-    public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) {
-        return false;
-    }
-
-    private static boolean isSurrogateFirst(int c) {
-        if (Config.VANILLA) {
-            return c >= 0xd8 && c <= 0xdb;
-        } else {
-            return (c & 0xfc) == 0xd8;
-        }
-    }
-
-    private static boolean isSurrogateSecond(int c) {
-        if (Config.VANILLA) {
-            return c >= 0xdc && c <= 0xdf;
-        } else {
-            return (c & 0xfc) == 0xdc;
-        }
-    }    
-
-    private static boolean isSurrogate(int c) {
-        if (Config.VANILLA) {
-            return (c & 0xf8) == 0;
-        } else {
-            return (c & 0xf8) == 0xd8;
-        }
-        
-    }
-    
-    public static final UTF16LEEncoding INSTANCE = new UTF16LEEncoding();
-}
diff --git a/src/org/joni/encoding/specific/UTF32BEEncoding.java b/src/org/joni/encoding/specific/UTF32BEEncoding.java
deleted file mode 100644
index 4670689..0000000
--- a/src/org/joni/encoding/specific/UTF32BEEncoding.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.encoding.unicode.UnicodeEncoding;
-
-public final class UTF32BEEncoding extends UnicodeEncoding {
-
-    protected UTF32BEEncoding() {
-        super(4, 4, null);
-    }
-
-    @Override
-    public String toString() {
-        return "UTF-32BE";
-    }
-
-    @Override
-    public int length(byte c) { 
-        return 4;       
-    }
-
-    @Override
-    public int length(byte[]bytes, int p, int end) { 
-        return 4;
-    }
-
-    @Override
-    public int strLength(byte[]bytes, int p, int end) {
-        return (end - p) >>> 2;
-    }
-
-    @Override
-    public boolean isNewLine(byte[]bytes, int p, int end) {
-        if (p + 3 < end) {
-            if (bytes[p + 3] == (byte)0x0a && bytes[p + 2] == 0 && bytes[p + 1] == 0 && bytes[p] == 0) return true;
-            
-            if (Config.USE_UNICODE_ALL_LINE_TERMINATORS) {
-                if ((Config.USE_CRNL_AS_LINE_TERMINATOR && bytes[p + 3] == (byte)0x0d) ||
-                   bytes[p + 3] == (byte)0x85 && bytes[p + 2] == 0 && bytes[p + 1] == 0 && bytes[p] == 0) return true;
-
-                if (bytes[p + 2] == (byte)0x20 &&
-                   (bytes[p + 3] == (byte)0x29 || bytes[p + 3] == (byte)0x28) &&
-                    bytes[p + 1] == 0 && bytes[p] == 0) return true;
-            } // USE_UNICODE_ALL_LINE_TERMINATORS
-        }
-        return false;
-    }
-    
-    @Override
-    public int mbcToCode(byte[]bytes, int p, int end) {
-        return (((bytes[p] & 0xff) * 256 + (bytes[p + 1] & 0xff)) * 256 + (bytes[p + 2] & 0xff)) * 256 + (bytes[p + 3] & 0xff);
-    }    
-    
-    @Override
-    public int codeToMbcLength(int code) {
-        return 4; 
-    }
-    
-    @Override
-    public int codeToMbc(int code, byte[]bytes, int p) {    
-        int p_ = p;
-        bytes[p_++] = (byte)((code & 0xff000000) >>> 24);
-        bytes[p_++] = (byte)((code & 0xff0000)   >>> 16);
-        bytes[p_++] = (byte)((code & 0xff00)     >>> 8);
-        bytes[p_++] = (byte) (code & 0xff);
-        return 4;
-    }    
-
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]fold) {
-        int p = pp.value;
-        int foldP = 0;
-        if (isAscii(bytes[p + 3] & 0xff) && bytes[p + 2] == 0 && bytes[p + 1] == 0 && bytes[p] == 0) {
-            fold[foldP++] = 0;
-            fold[foldP++] = 0;
-
-            if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI) {
-                if ((flag & Config.ENC_CASE_FOLD_TURKISH_AZERI) != 0) {
-                    if (bytes[p + 3] == (byte)0x49) {
-                        fold[foldP++] = (byte)0x01;
-                        fold[foldP] = (byte)0x31;
-                        pp.value += 4;
-                        return 4;
-                    }
-                }
-            } // USE_UNICODE_CASE_FOLD_TURKISH_AZERI
-
-            fold[foldP++] = 0;
-            fold[foldP] = ASCIIEncoding.AsciiToLowerCaseTable[bytes[p + 3] & 0xff];
-            pp.value += 4;            
-            return 4;
-        } else {
-            return super.mbcCaseFold(flag, bytes, pp, end, fold);
-        }
-    }
-    
-    /** onigenc_utf16_32_get_ctype_code_range
-     */
-    @Override
-    public int[]ctypeCodeRange(int ctype, IntHolder sbOut) {
-        sbOut.value = 0x00;
-        return super.ctypeCodeRange(ctype);
-    }
-    
-    @Override
-    public int leftAdjustCharHead(byte[]bytes, int p, int end) {
-        if (end <= p) return end;
-
-        return end - ((end - p) % 4); 
-    }    
-    
-    @Override
-    public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) {
-        return false;
-    }    
-    
-    public static UTF32BEEncoding INSTANCE = new UTF32BEEncoding();
-}
diff --git a/src/org/joni/encoding/specific/UTF32LEEncoding.java b/src/org/joni/encoding/specific/UTF32LEEncoding.java
deleted file mode 100644
index 7aca470..0000000
--- a/src/org/joni/encoding/specific/UTF32LEEncoding.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.encoding.unicode.UnicodeEncoding;
-
-public final class UTF32LEEncoding extends UnicodeEncoding {
-
-    protected UTF32LEEncoding() {
-        super(4, 4, null);
-    }
-    
-    @Override
-    public String toString() {
-        return "UTF-32LE";
-    }
-
-    @Override
-    public int length(byte c) { 
-        return 4;       
-    }
-
-    @Override
-    public int length(byte[]bytes, int p, int end) { 
-        return 4;
-    }
-
-    @Override
-    public int strLength(byte[]bytes, int p, int end) {
-        return (end - p) >>> 2;
-    }
-
-    @Override
-    public boolean isNewLine(byte[]bytes, int p, int end) {
-        if (p + 3 < end) {
-            if (bytes[p] == (byte)0x0a && bytes[p + 1] == 0 && bytes[p + 2] == 0 && bytes[p + 3] == 0) return true;
-            
-            if (Config.USE_UNICODE_ALL_LINE_TERMINATORS) {
-                if ((Config.USE_CRNL_AS_LINE_TERMINATOR && bytes[p] == (byte)0x0d) ||
-                   bytes[p] == (byte)0x85 && bytes[p + 1] == 0 && bytes[p + 2] == 0 && bytes[3] == 0) return true;
-
-                if (bytes[p + 1] == (byte)0x20 &&
-                   (bytes[p] == (byte)0x29 || bytes[p] == (byte)0x28) &&
-                    bytes[p + 2] == 0 && bytes[p + 3] == 0) return true;
-            } // USE_UNICODE_ALL_LINE_TERMINATORS
-        }
-        return false;
-    }
-    
-    @Override
-    public int mbcToCode(byte[]bytes, int p, int end) {
-        return (((bytes[p + 3] & 0xff) * 256 + (bytes[p + 2] & 0xff)) * 256 + (bytes[p + 1] & 0xff)) * 256 + (bytes[p] & 0xff);
-    }    
-    
-    @Override
-    public int codeToMbcLength(int code) {
-        return 4; 
-    }
-    
-    @Override
-    public int codeToMbc(int code, byte[]bytes, int p) {    
-        int p_ = p;
-        bytes[p_++] = (byte) (code & 0xff);
-        bytes[p_++] = (byte)((code & 0xff00)     >>> 8);
-        bytes[p_++] = (byte)((code & 0xff0000)   >>> 16);
-        bytes[p_++] = (byte)((code & 0xff000000) >>> 24);
-        return 4;
-    }    
-
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]fold) {
-        int p = pp.value;
-        int foldP = 0;
-        if (isAscii(bytes[p] & 0xff) && bytes[p + 1] == 0 && bytes[p + 2] == 0 && bytes[p + 3] == 0) {
-            
-            if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI && (flag & Config.ENC_CASE_FOLD_TURKISH_AZERI) != 0) {
-                if (bytes[p] == (byte)0x49) {
-                    fold[foldP++] = (byte)0x31;
-                        fold[foldP] = (byte)0x01;
-                }
-            } else { 
-                fold[foldP++] = ASCIIEncoding.AsciiToLowerCaseTable[bytes[p] & 0xff];
-                fold[foldP++] = 0;
-            } // USE_UNICODE_CASE_FOLD_TURKISH_AZERI
-            
-            fold[foldP++] = 0;            
-            fold[foldP] = 0;
-
-            pp.value += 4;            
-            return 4;
-        } else {
-            return super.mbcCaseFold(flag, bytes, pp, end, fold);
-        }
-    }
-    
-    /** onigenc_utf16_32_get_ctype_code_range
-     */
-    @Override
-    public int[]ctypeCodeRange(int ctype, IntHolder sbOut) {
-        sbOut.value = 0x00;
-        return super.ctypeCodeRange(ctype);
-    }
-    
-    @Override
-    public int leftAdjustCharHead(byte[]bytes, int p, int end) {
-        if (end <= p) return end;
-
-        return end - ((end - p) % 4); 
-    }    
-    
-    @Override
-    public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) {
-        return false;
-    }    
-    
-    public static UTF32LEEncoding INSTANCE = new UTF32LEEncoding();
-}
diff --git a/src/org/joni/encoding/specific/UTF8Encoding.java b/src/org/joni/encoding/specific/UTF8Encoding.java
deleted file mode 100644
index 6771855..0000000
--- a/src/org/joni/encoding/specific/UTF8Encoding.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.specific;
-
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.encoding.unicode.UnicodeEncoding;
-import org.joni.exception.ErrorMessages;
-import org.joni.exception.ValueException;
-
-public final class UTF8Encoding extends UnicodeEncoding {
-    static final boolean USE_INVALID_CODE_SCHEME = true; 
-
-    protected UTF8Encoding() {
-        super(1, 6, UTF8EncLen, UTF8Trans);
-    }
-    
-    @Override
-    public String toString() {
-        return "UTF-8";
-    }
-
-    @Override
-    public int length(byte[]bytes, int p, int end) {
-        if (Config.VANILLA) {
-            return length(bytes[p]);
-        } else {
-            return safeLengthForUptoFour(bytes, p, end);
-        }
-    }
-
-    @Override
-    public boolean isNewLine(byte[]bytes, int p, int end) {
-        if (p < end) {
-            if (bytes[p] == (byte)0x0a) return true;
-            
-            if (Config.USE_UNICODE_ALL_LINE_TERMINATORS) {
-                if (!Config.USE_CRNL_AS_LINE_TERMINATOR) {
-                    if (bytes[p] == (byte)0x0d) return true;
-                }
-                
-                if (p + 1 < end) { // & 0xff...
-                    if (bytes[p+1] == (byte)0x85 && bytes[p] == (byte)0xc2) return true; /* U+0085 */
-                    if (p + 2 < end) {
-                        if ((bytes[p+2] == (byte)0xa8 || bytes[p+2] == (byte)0xa9) &&
-                            bytes[p+1] == (byte)0x80 && bytes[p] == (byte)0xe2) return true; /* U+2028, U+2029 */
-                    }
-                }
-            } // USE_UNICODE_ALL_LINE_TERMINATORS
-        }
-        return false;
-    }
-
-    private static final int INVALID_CODE_FE = 0xfffffffe;
-    private static final int INVALID_CODE_FF = 0xffffffff;
-    // private static final int VALID_CODE_LIMIT = 0x7fffffff;
-    @Override
-    public int codeToMbcLength(int code) {
-        if ((code & 0xffffff80) == 0) {
-            return 1;
-        } else if ((code & 0xfffff800) == 0) {
-            return 2;
-        } else if ((code & 0xffff0000) == 0) {
-            return 3;
-        } else if ((code & 0xffe00000) == 0) {
-            return 4;
-        } else if ((code & 0xfc000000) == 0) {
-            return 5;
-        } else if ((code & 0x80000000) == 0) {
-            return 6;
-        } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FE) {
-            return 1;
-        } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FF) {
-            return 1;
-        } else {
-            throw new ValueException(ErrorMessages.ERR_INVALID_CODE_POINT_VALUE);
-        }
-    }
-    
-    @Override
-    public int mbcToCode(byte[]bytes, int p, int end) {
-        int len = length(bytes, p, end);
-        
-        int c = bytes[p++] & 0xff;
-        
-        if (len > 1) {
-            len--;
-            int n = c & ((1 << (6 - len)) - 1);
-            while (len-- != 0) {
-                c = bytes[p++] & 0xff;
-                n = (n << 6) | (c & ((1 << 6) - 1));
-            }
-            return n;
-        } else {
-            if (USE_INVALID_CODE_SCHEME) {
-                if (c > 0xfd) return c == 0xfe ? INVALID_CODE_FE : INVALID_CODE_FF;
-            }
-            return c;
-        }
-    }
-    
-    static byte trailS(int code, int shift) {
-        return (byte)((((code) >>> (shift)) & 0x3f) | 0x80);
-    }
-    
-    static byte trail0(int code) {
-        return (byte)(((code) & 0x3f) | 0x80);
-    }
-    
-    @Override
-    public int codeToMbc(int code, byte[]bytes, int p) {
-        int p_ = p;
-        if ((code & 0xffffff80) == 0) {
-            bytes[p_] = (byte)code;
-            return 1;
-        } else {
-            if ((code & 0xfffff800) == 0) {
-                bytes[p_++] = (byte)(((code >>> 6) & 0x1f) | 0xc0);
-            } else if ((code & 0xffff0000) == 0) {
-                bytes[p_++] = (byte)(((code >>> 12) & 0x0f) | 0xe0);
-                bytes[p_++] = trailS(code, 6);
-            } else if ((code & 0xffe00000) == 0) {
-                bytes[p_++] = (byte)(((code >>> 18) & 0x07) | 0xf0);
-                bytes[p_++] = trailS(code, 12);
-                bytes[p_++] = trailS(code, 6);
-            } else if ((code & 0xfc000000) == 0) {
-                bytes[p_++] = (byte)(((code >>> 24) & 0x03) | 0xf8);
-                bytes[p_++] = trailS(code, 18);
-                bytes[p_++] = trailS(code, 12);
-                bytes[p_++] = trailS(code, 6);
-            } else if ((code & 0x80000000) == 0) {
-                bytes[p_++] = (byte)(((code >>> 30) & 0x01) | 0xfc);
-                bytes[p_++] = trailS(code, 24);
-                bytes[p_++] = trailS(code, 18);
-                bytes[p_++] = trailS(code, 12);
-                bytes[p_++] = trailS(code, 6);
-            } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FE) {
-                bytes[p_] = (byte)0xfe;
-                return 1;
-            } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FF) {
-                bytes[p_] = (byte)0xff;
-                return 1;
-            } else {
-                throw new ValueException(ErrorMessages.ERR_TOO_BIG_WIDE_CHAR_VALUE);
-            }
-            bytes[p_++] = trail0(code);
-            return p_ - p; 
-          }
-    }
-
-    // utf8_mbc_case_fold
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]fold) {
-        int p = pp.value;
-        int foldP = 0;
-        
-        if (isMbcAscii(bytes[p])) {
-            
-            if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI) {
-                if ((flag & Config.ENC_CASE_FOLD_TURKISH_AZERI) != 0) {
-                    if (bytes[p] == (byte)0x49) {
-                        fold[foldP++] = (byte)0xc4l;
-                        fold[foldP] = (byte)0xb1;
-                        pp.value++;
-                        return 2;
-                    }
-                }
-            } // USE_UNICODE_CASE_FOLD_TURKISH_AZERI
-            
-            fold[foldP] = ASCIIEncoding.AsciiToLowerCaseTable[bytes[p] & 0xff];
-            pp.value++;
-            return 1; /* return byte length of converted char to lower */
-        } else {
-            return super.mbcCaseFold(flag, bytes, pp, end, fold);
-        }
-    }
-    
-    /** utf8_get_ctype_code_range
-     */
-    @Override
-    public int[]ctypeCodeRange(int ctype, IntHolder sbOut) {
-        sbOut.value = 0x80;
-        return super.ctypeCodeRange(ctype); // onigenc_unicode_ctype_code_range
-    }
-    
-    private static boolean utf8IsLead(int c) {
-        return ((c & 0xc0) & 0xff) != 0x80;
-    }
-    
-    /** utf8_left_adjust_char_head
-     */
-    @Override
-    public int leftAdjustCharHead(byte[]bytes, int p, int end) {
-        if (end <= p) return end;
-        int p_ = end;
-        while (!utf8IsLead(bytes[p_] & 0xff) && p_ > p) p_--;
-        return p_;
-    }
-    
-    /** onigenc_always_true_is_allowed_reverse_match
-     */
-    @Override
-    public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) {
-        return true;
-    }
-    
-    private static final int UTF8EncLen[] = Config.VANILLA ? 
-        new int[]{
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-        4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 1, 1
-    } : new int[] {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-        3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-        4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
-    };
-
-    private static final int UTF8Trans[][] = Config.VANILLA ? null : new int[][]{
-        { /* S0   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* c */ F, F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* e */ 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3,
-          /* f */ 5, 6, 6, 6, 7, F, F, F, F, F, F, F, F, F, F, F 
-        },
-        { /* S1   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
-          /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F 
-        },
-        { /* S2   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F 
-        },
-        { /* S3   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F 
-        },
-        { /* S4   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-          /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F 
-        },
-        { /* S5   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 9 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* a */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* b */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F 
-        },
-        { /* S6   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* 9 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* a */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* b */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F 
-        },
-        { /* S7   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-          /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* 8 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-          /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
-          /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F 
-        }
-    };
-
-    public static final UTF8Encoding INSTANCE = new UTF8Encoding();
-}
diff --git a/src/org/joni/encoding/unicode/UnicodeCTypeNames.java b/src/org/joni/encoding/unicode/UnicodeCTypeNames.java
deleted file mode 100644
index c15b858..0000000
--- a/src/org/joni/encoding/unicode/UnicodeCTypeNames.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.unicode;
-
-import org.joni.Config;
-import org.joni.util.BytesHash;
-
-public class UnicodeCTypeNames {
-
-    private static final byte CTypeNameTable[][] = Config.USE_UNICODE_PROPERTIES ?
-        new byte[][] {
-        "NEWLINE".getBytes(),
-        "Alpha".getBytes(),
-        "Blank".getBytes(),
-        "Cntrl".getBytes(),
-        "Digit".getBytes(),
-        "Graph".getBytes(),
-        "Lower".getBytes(),
-        "Print".getBytes(),
-        "Punct".getBytes(),
-        "Space".getBytes(),
-        "Upper".getBytes(),
-        "XDigit".getBytes(),
-        "Word".getBytes(),
-        "Alnum".getBytes(),
-        "ASCII".getBytes(),
-
-        // unicode properties
-        "Any".getBytes(),
-        "Assigned".getBytes(),
-        "C".getBytes(),
-        "Cc".getBytes(),
-        "Cf".getBytes(),
-        "Cn".getBytes(),
-        "Co".getBytes(),
-        "Cs".getBytes(),
-        "L".getBytes(),
-        "Ll".getBytes(),
-        "Lm".getBytes(),
-        "Lo".getBytes(),
-        "Lt".getBytes(),
-        "Lu".getBytes(),
-        "M".getBytes(),
-        "Mc".getBytes(),
-        "Me".getBytes(),
-        "Mn".getBytes(),
-        "N".getBytes(),
-        "Nd".getBytes(),
-        "Nl".getBytes(),
-        "No".getBytes(),
-        "P".getBytes(),
-        "Pc".getBytes(),
-        "Pd".getBytes(),
-        "Pe".getBytes(),
-        "Pf".getBytes(),
-        "Pi".getBytes(),
-        "Po".getBytes(),
-        "Ps".getBytes(),
-        "S".getBytes(),
-        "Sc".getBytes(),
-        "Sk".getBytes(),
-        "Sm".getBytes(),
-        "So".getBytes(),
-        "Z".getBytes(),
-        "Zl".getBytes(),
-        "Zp".getBytes(),
-        "Zs".getBytes(),
-        "Arabic".getBytes(),
-        "Armenian".getBytes(),
-        "Bengali".getBytes(),
-        "Bopomofo".getBytes(),
-        "Braille".getBytes(),
-        "Buginese".getBytes(),
-        "Buhid".getBytes(),
-        "Canadian_Aboriginal".getBytes(),
-        "Cherokee".getBytes(),
-        "Common".getBytes(),
-        "Coptic".getBytes(),
-        "Cypriot".getBytes(),
-        "Cyrillic".getBytes(),
-        "Deseret".getBytes(),
-        "Devanagari".getBytes(),
-        "Ethiopic".getBytes(),
-        "Georgian".getBytes(),
-        "Glagolitic".getBytes(),
-        "Gothic".getBytes(),
-        "Greek".getBytes(),
-        "Gujarati".getBytes(),
-        "Gurmukhi".getBytes(),
-        "Han".getBytes(),
-        "Hangul".getBytes(),
-        "Hanunoo".getBytes(),
-        "Hebrew".getBytes(),
-        "Hiragana".getBytes(),
-        "Inherited".getBytes(),
-        "Kannada".getBytes(),
-        "Katakana".getBytes(),
-        "Kharoshthi".getBytes(),
-        "Khmer".getBytes(),
-        "Lao".getBytes(),
-        "Latin".getBytes(),
-        "Limbu".getBytes(),
-        "Linear_B".getBytes(),
-        "Malayalam".getBytes(),
-        "Mongolian".getBytes(),
-        "Myanmar".getBytes(),
-        "New_Tai_Lue".getBytes(),
-        "Ogham".getBytes(),
-        "Old_Italic".getBytes(),
-        "Old_Persian".getBytes(),
-        "Oriya".getBytes(),
-        "Osmanya".getBytes(),
-        "Runic".getBytes(),
-        "Shavian".getBytes(),
-        "Sinhala".getBytes(),
-        "Syloti_Nagri".getBytes(),
-        "Syriac".getBytes(),
-        "Tagalog".getBytes(),
-        "Tagbanwa".getBytes(),
-        "Tai_Le".getBytes(),
-        "Tamil".getBytes(),
-        "Telugu".getBytes(),
-        "Thaana".getBytes(),
-        "Thai".getBytes(),
-        "Tibetan".getBytes(),
-        "Tifinagh".getBytes(),
-        "Ugaritic".getBytes(),
-        "Yi".getBytes()
-    } :
-        new byte[][] {
-        "NEWLINE".getBytes(),
-        "Alpha".getBytes(),
-        "Blank".getBytes(),
-        "Cntrl".getBytes(),
-        "Digit".getBytes(),
-        "Graph".getBytes(),
-        "Lower".getBytes(),
-        "Print".getBytes(),
-        "Punct".getBytes(),
-        "Space".getBytes(),
-        "Upper".getBytes(),
-        "XDigit".getBytes(),
-        "Word".getBytes(),
-        "Alnum".getBytes(),
-        "ASCII".getBytes()
-    };
-
-    private static BytesHash<Integer> initializeCTypeNameTable() {
-        BytesHash<Integer> table = new BytesHash<Integer>();
-        for (int i=0; i<CTypeNameTable.length; i++) table.putDirect(CTypeNameTable[i], i);
-
-        return table;
-    }
-    
-    static final BytesHash<Integer> CTypeNameHash = initializeCTypeNameTable();    
-}
diff --git a/src/org/joni/encoding/unicode/UnicodeCaseFolds.java b/src/org/joni/encoding/unicode/UnicodeCaseFolds.java
deleted file mode 100644
index ef48ac7..0000000
--- a/src/org/joni/encoding/unicode/UnicodeCaseFolds.java
+++ /dev/null
@@ -1,3847 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.unicode;
-
-import org.joni.util.IntArrayHash;
-import org.joni.util.IntHash;
-
-public class UnicodeCaseFolds {
-
-    private static final int CaseFold1_From[]  = new int[] {
-        0x0041,
-        0x0042,
-        0x0043,
-        0x0044,
-        0x0045,
-        0x0046,
-        0x0047,
-        0x0048,
-        0x004a,
-        0x004b,
-        0x004c,
-        0x004d,
-        0x004e,
-        0x004f,
-        0x0050,
-        0x0051,
-        0x0052,
-        0x0053,
-        0x0054,
-        0x0055,
-        0x0056,
-        0x0057,
-        0x0058,
-        0x0059,
-        0x005a,
-        0x00b5,
-        0x00c0,
-        0x00c1,
-        0x00c2,
-        0x00c3,
-        0x00c4,
-        0x00c5,
-        0x00c6,
-        0x00c7,
-        0x00c8,
-        0x00c9,
-        0x00ca,
-        0x00cb,
-        0x00cc,
-        0x00cd,
-        0x00ce,
-        0x00cf,
-        0x00d0,
-        0x00d1,
-        0x00d2,
-        0x00d3,
-        0x00d4,
-        0x00d5,
-        0x00d6,
-        0x00d8,
-        0x00d9,
-        0x00da,
-        0x00db,
-        0x00dc,
-        0x00dd,
-        0x00de,
-        0x00df,
-        0x0100,
-        0x0102,
-        0x0104,
-        0x0106,
-        0x0108,
-        0x010a,
-        0x010c,
-        0x010e,
-        0x0110,
-        0x0112,
-        0x0114,
-        0x0116,
-        0x0118,
-        0x011a,
-        0x011c,
-        0x011e,
-        0x0120,
-        0x0122,
-        0x0124,
-        0x0126,
-        0x0128,
-        0x012a,
-        0x012c,
-        0x012e,
-        0x0132,
-        0x0134,
-        0x0136,
-        0x0139,
-        0x013b,
-        0x013d,
-        0x013f,
-        0x0141,
-        0x0143,
-        0x0145,
-        0x0147,
-        0x0149,
-        0x014a,
-        0x014c,
-        0x014e,
-        0x0150,
-        0x0152,
-        0x0154,
-        0x0156,
-        0x0158,
-        0x015a,
-        0x015c,
-        0x015e,
-        0x0160,
-        0x0162,
-        0x0164,
-        0x0166,
-        0x0168,
-        0x016a,
-        0x016c,
-        0x016e,
-        0x0170,
-        0x0172,
-        0x0174,
-        0x0176,
-        0x0178,
-        0x0179,
-        0x017b,
-        0x017d,
-        0x017f,
-        0x0181,
-        0x0182,
-        0x0184,
-        0x0186,
-        0x0187,
-        0x0189,
-        0x018a,
-        0x018b,
-        0x018e,
-        0x018f,
-        0x0190,
-        0x0191,
-        0x0193,
-        0x0194,
-        0x0196,
-        0x0197,
-        0x0198,
-        0x019c,
-        0x019d,
-        0x019f,
-        0x01a0,
-        0x01a2,
-        0x01a4,
-        0x01a6,
-        0x01a7,
-        0x01a9,
-        0x01ac,
-        0x01ae,
-        0x01af,
-        0x01b1,
-        0x01b2,
-        0x01b3,
-        0x01b5,
-        0x01b7,
-        0x01b8,
-        0x01bc,
-        0x01c4,
-        0x01c5,
-        0x01c7,
-        0x01c8,
-        0x01ca,
-        0x01cb,
-        0x01cd,
-        0x01cf,
-        0x01d1,
-        0x01d3,
-        0x01d5,
-        0x01d7,
-        0x01d9,
-        0x01db,
-        0x01de,
-        0x01e0,
-        0x01e2,
-        0x01e4,
-        0x01e6,
-        0x01e8,
-        0x01ea,
-        0x01ec,
-        0x01ee,
-        0x01f0,
-        0x01f1,
-        0x01f2,
-        0x01f4,
-        0x01f6,
-        0x01f7,
-        0x01f8,
-        0x01fa,
-        0x01fc,
-        0x01fe,
-        0x0200,
-        0x0202,
-        0x0204,
-        0x0206,
-        0x0208,
-        0x020a,
-        0x020c,
-        0x020e,
-        0x0210,
-        0x0212,
-        0x0214,
-        0x0216,
-        0x0218,
-        0x021a,
-        0x021c,
-        0x021e,
-        0x0220,
-        0x0222,
-        0x0224,
-        0x0226,
-        0x0228,
-        0x022a,
-        0x022c,
-        0x022e,
-        0x0230,
-        0x0232,
-        0x023b,
-        0x023d,
-        0x0241,
-        0x0345,
-        0x0386,
-        0x0388,
-        0x0389,
-        0x038a,
-        0x038c,
-        0x038e,
-        0x038f,
-        0x0390,
-        0x0391,
-        0x0392,
-        0x0393,
-        0x0394,
-        0x0395,
-        0x0396,
-        0x0397,
-        0x0398,
-        0x0399,
-        0x039a,
-        0x039b,
-        0x039c,
-        0x039d,
-        0x039e,
-        0x039f,
-        0x03a0,
-        0x03a1,
-        0x03a3,
-        0x03a4,
-        0x03a5,
-        0x03a6,
-        0x03a7,
-        0x03a8,
-        0x03a9,
-        0x03aa,
-        0x03ab,
-        0x03b0,
-        0x03c2,
-        0x03d0,
-        0x03d1,
-        0x03d5,
-        0x03d6,
-        0x03d8,
-        0x03da,
-        0x03dc,
-        0x03de,
-        0x03e0,
-        0x03e2,
-        0x03e4,
-        0x03e6,
-        0x03e8,
-        0x03ea,
-        0x03ec,
-        0x03ee,
-        0x03f0,
-        0x03f1,
-        0x03f4,
-        0x03f5,
-        0x03f7,
-        0x03f9,
-        0x03fa,
-        0x0400,
-        0x0401,
-        0x0402,
-        0x0403,
-        0x0404,
-        0x0405,
-        0x0406,
-        0x0407,
-        0x0408,
-        0x0409,
-        0x040a,
-        0x040b,
-        0x040c,
-        0x040d,
-        0x040e,
-        0x040f,
-        0x0410,
-        0x0411,
-        0x0412,
-        0x0413,
-        0x0414,
-        0x0415,
-        0x0416,
-        0x0417,
-        0x0418,
-        0x0419,
-        0x041a,
-        0x041b,
-        0x041c,
-        0x041d,
-        0x041e,
-        0x041f,
-        0x0420,
-        0x0421,
-        0x0422,
-        0x0423,
-        0x0424,
-        0x0425,
-        0x0426,
-        0x0427,
-        0x0428,
-        0x0429,
-        0x042a,
-        0x042b,
-        0x042c,
-        0x042d,
-        0x042e,
-        0x042f,
-        0x0460,
-        0x0462,
-        0x0464,
-        0x0466,
-        0x0468,
-        0x046a,
-        0x046c,
-        0x046e,
-        0x0470,
-        0x0472,
-        0x0474,
-        0x0476,
-        0x0478,
-        0x047a,
-        0x047c,
-        0x047e,
-        0x0480,
-        0x048a,
-        0x048c,
-        0x048e,
-        0x0490,
-        0x0492,
-        0x0494,
-        0x0496,
-        0x0498,
-        0x049a,
-        0x049c,
-        0x049e,
-        0x04a0,
-        0x04a2,
-        0x04a4,
-        0x04a6,
-        0x04a8,
-        0x04aa,
-        0x04ac,
-        0x04ae,
-        0x04b0,
-        0x04b2,
-        0x04b4,
-        0x04b6,
-        0x04b8,
-        0x04ba,
-        0x04bc,
-        0x04be,
-        0x04c1,
-        0x04c3,
-        0x04c5,
-        0x04c7,
-        0x04c9,
-        0x04cb,
-        0x04cd,
-        0x04d0,
-        0x04d2,
-        0x04d4,
-        0x04d6,
-        0x04d8,
-        0x04da,
-        0x04dc,
-        0x04de,
-        0x04e0,
-        0x04e2,
-        0x04e4,
-        0x04e6,
-        0x04e8,
-        0x04ea,
-        0x04ec,
-        0x04ee,
-        0x04f0,
-        0x04f2,
-        0x04f4,
-        0x04f6,
-        0x04f8,
-        0x0500,
-        0x0502,
-        0x0504,
-        0x0506,
-        0x0508,
-        0x050a,
-        0x050c,
-        0x050e,
-        0x0531,
-        0x0532,
-        0x0533,
-        0x0534,
-        0x0535,
-        0x0536,
-        0x0537,
-        0x0538,
-        0x0539,
-        0x053a,
-        0x053b,
-        0x053c,
-        0x053d,
-        0x053e,
-        0x053f,
-        0x0540,
-        0x0541,
-        0x0542,
-        0x0543,
-        0x0544,
-        0x0545,
-        0x0546,
-        0x0547,
-        0x0548,
-        0x0549,
-        0x054a,
-        0x054b,
-        0x054c,
-        0x054d,
-        0x054e,
-        0x054f,
-        0x0550,
-        0x0551,
-        0x0552,
-        0x0553,
-        0x0554,
-        0x0555,
-        0x0556,
-        0x0587,
-        0x10a0,
-        0x10a1,
-        0x10a2,
-        0x10a3,
-        0x10a4,
-        0x10a5,
-        0x10a6,
-        0x10a7,
-        0x10a8,
-        0x10a9,
-        0x10aa,
-        0x10ab,
-        0x10ac,
-        0x10ad,
-        0x10ae,
-        0x10af,
-        0x10b0,
-        0x10b1,
-        0x10b2,
-        0x10b3,
-        0x10b4,
-        0x10b5,
-        0x10b6,
-        0x10b7,
-        0x10b8,
-        0x10b9,
-        0x10ba,
-        0x10bb,
-        0x10bc,
-        0x10bd,
-        0x10be,
-        0x10bf,
-        0x10c0,
-        0x10c1,
-        0x10c2,
-        0x10c3,
-        0x10c4,
-        0x10c5,
-        0x1e00,
-        0x1e02,
-        0x1e04,
-        0x1e06,
-        0x1e08,
-        0x1e0a,
-        0x1e0c,
-        0x1e0e,
-        0x1e10,
-        0x1e12,
-        0x1e14,
-        0x1e16,
-        0x1e18,
-        0x1e1a,
-        0x1e1c,
-        0x1e1e,
-        0x1e20,
-        0x1e22,
-        0x1e24,
-        0x1e26,
-        0x1e28,
-        0x1e2a,
-        0x1e2c,
-        0x1e2e,
-        0x1e30,
-        0x1e32,
-        0x1e34,
-        0x1e36,
-        0x1e38,
-        0x1e3a,
-        0x1e3c,
-        0x1e3e,
-        0x1e40,
-        0x1e42,
-        0x1e44,
-        0x1e46,
-        0x1e48,
-        0x1e4a,
-        0x1e4c,
-        0x1e4e,
-        0x1e50,
-        0x1e52,
-        0x1e54,
-        0x1e56,
-        0x1e58,
-        0x1e5a,
-        0x1e5c,
-        0x1e5e,
-        0x1e60,
-        0x1e62,
-        0x1e64,
-        0x1e66,
-        0x1e68,
-        0x1e6a,
-        0x1e6c,
-        0x1e6e,
-        0x1e70,
-        0x1e72,
-        0x1e74,
-        0x1e76,
-        0x1e78,
-        0x1e7a,
-        0x1e7c,
-        0x1e7e,
-        0x1e80,
-        0x1e82,
-        0x1e84,
-        0x1e86,
-        0x1e88,
-        0x1e8a,
-        0x1e8c,
-        0x1e8e,
-        0x1e90,
-        0x1e92,
-        0x1e94,
-        0x1e96,
-        0x1e97,
-        0x1e98,
-        0x1e99,
-        0x1e9a,
-        0x1e9b,
-        0x1ea0,
-        0x1ea2,
-        0x1ea4,
-        0x1ea6,
-        0x1ea8,
-        0x1eaa,
-        0x1eac,
-        0x1eae,
-        0x1eb0,
-        0x1eb2,
-        0x1eb4,
-        0x1eb6,
-        0x1eb8,
-        0x1eba,
-        0x1ebc,
-        0x1ebe,
-        0x1ec0,
-        0x1ec2,
-        0x1ec4,
-        0x1ec6,
-        0x1ec8,
-        0x1eca,
-        0x1ecc,
-        0x1ece,
-        0x1ed0,
-        0x1ed2,
-        0x1ed4,
-        0x1ed6,
-        0x1ed8,
-        0x1eda,
-        0x1edc,
-        0x1ede,
-        0x1ee0,
-        0x1ee2,
-        0x1ee4,
-        0x1ee6,
-        0x1ee8,
-        0x1eea,
-        0x1eec,
-        0x1eee,
-        0x1ef0,
-        0x1ef2,
-        0x1ef4,
-        0x1ef6,
-        0x1ef8,
-        0x1f08,
-        0x1f09,
-        0x1f0a,
-        0x1f0b,
-        0x1f0c,
-        0x1f0d,
-        0x1f0e,
-        0x1f0f,
-        0x1f18,
-        0x1f19,
-        0x1f1a,
-        0x1f1b,
-        0x1f1c,
-        0x1f1d,
-        0x1f28,
-        0x1f29,
-        0x1f2a,
-        0x1f2b,
-        0x1f2c,
-        0x1f2d,
-        0x1f2e,
-        0x1f2f,
-        0x1f38,
-        0x1f39,
-        0x1f3a,
-        0x1f3b,
-        0x1f3c,
-        0x1f3d,
-        0x1f3e,
-        0x1f3f,
-        0x1f48,
-        0x1f49,
-        0x1f4a,
-        0x1f4b,
-        0x1f4c,
-        0x1f4d,
-        0x1f50,
-        0x1f52,
-        0x1f54,
-        0x1f56,
-        0x1f59,
-        0x1f5b,
-        0x1f5d,
-        0x1f5f,
-        0x1f68,
-        0x1f69,
-        0x1f6a,
-        0x1f6b,
-        0x1f6c,
-        0x1f6d,
-        0x1f6e,
-        0x1f6f,
-        0x1f80,
-        0x1f81,
-        0x1f82,
-        0x1f83,
-        0x1f84,
-        0x1f85,
-        0x1f86,
-        0x1f87,
-        0x1f88,
-        0x1f89,
-        0x1f8a,
-        0x1f8b,
-        0x1f8c,
-        0x1f8d,
-        0x1f8e,
-        0x1f8f,
-        0x1f90,
-        0x1f91,
-        0x1f92,
-        0x1f93,
-        0x1f94,
-        0x1f95,
-        0x1f96,
-        0x1f97,
-        0x1f98,
-        0x1f99,
-        0x1f9a,
-        0x1f9b,
-        0x1f9c,
-        0x1f9d,
-        0x1f9e,
-        0x1f9f,
-        0x1fa0,
-        0x1fa1,
-        0x1fa2,
-        0x1fa3,
-        0x1fa4,
-        0x1fa5,
-        0x1fa6,
-        0x1fa7,
-        0x1fa8,
-        0x1fa9,
-        0x1faa,
-        0x1fab,
-        0x1fac,
-        0x1fad,
-        0x1fae,
-        0x1faf,
-        0x1fb2,
-        0x1fb3,
-        0x1fb4,
-        0x1fb6,
-        0x1fb7,
-        0x1fb8,
-        0x1fb9,
-        0x1fba,
-        0x1fbb,
-        0x1fbc,
-        0x1fbe,
-        0x1fc2,
-        0x1fc3,
-        0x1fc4,
-        0x1fc6,
-        0x1fc7,
-        0x1fc8,
-        0x1fc9,
-        0x1fca,
-        0x1fcb,
-        0x1fcc,
-        0x1fd2,
-        0x1fd3,
-        0x1fd6,
-        0x1fd7,
-        0x1fd8,
-        0x1fd9,
-        0x1fda,
-        0x1fdb,
-        0x1fe2,
-        0x1fe3,
-        0x1fe4,
-        0x1fe6,
-        0x1fe7,
-        0x1fe8,
-        0x1fe9,
-        0x1fea,
-        0x1feb,
-        0x1fec,
-        0x1ff2,
-        0x1ff3,
-        0x1ff4,
-        0x1ff6,
-        0x1ff7,
-        0x1ff8,
-        0x1ff9,
-        0x1ffa,
-        0x1ffb,
-        0x1ffc,
-        0x2126,
-        0x212a,
-        0x212b,
-        0x2160,
-        0x2161,
-        0x2162,
-        0x2163,
-        0x2164,
-        0x2165,
-        0x2166,
-        0x2167,
-        0x2168,
-        0x2169,
-        0x216a,
-        0x216b,
-        0x216c,
-        0x216d,
-        0x216e,
-        0x216f,
-        0x24b6,
-        0x24b7,
-        0x24b8,
-        0x24b9,
-        0x24ba,
-        0x24bb,
-        0x24bc,
-        0x24bd,
-        0x24be,
-        0x24bf,
-        0x24c0,
-        0x24c1,
-        0x24c2,
-        0x24c3,
-        0x24c4,
-        0x24c5,
-        0x24c6,
-        0x24c7,
-        0x24c8,
-        0x24c9,
-        0x24ca,
-        0x24cb,
-        0x24cc,
-        0x24cd,
-        0x24ce,
-        0x24cf,
-        0x2c00,
-        0x2c01,
-        0x2c02,
-        0x2c03,
-        0x2c04,
-        0x2c05,
-        0x2c06,
-        0x2c07,
-        0x2c08,
-        0x2c09,
-        0x2c0a,
-        0x2c0b,
-        0x2c0c,
-        0x2c0d,
-        0x2c0e,
-        0x2c0f,
-        0x2c10,
-        0x2c11,
-        0x2c12,
-        0x2c13,
-        0x2c14,
-        0x2c15,
-        0x2c16,
-        0x2c17,
-        0x2c18,
-        0x2c19,
-        0x2c1a,
-        0x2c1b,
-        0x2c1c,
-        0x2c1d,
-        0x2c1e,
-        0x2c1f,
-        0x2c20,
-        0x2c21,
-        0x2c22,
-        0x2c23,
-        0x2c24,
-        0x2c25,
-        0x2c26,
-        0x2c27,
-        0x2c28,
-        0x2c29,
-        0x2c2a,
-        0x2c2b,
-        0x2c2c,
-        0x2c2d,
-        0x2c2e,
-        0x2c80,
-        0x2c82,
-        0x2c84,
-        0x2c86,
-        0x2c88,
-        0x2c8a,
-        0x2c8c,
-        0x2c8e,
-        0x2c90,
-        0x2c92,
-        0x2c94,
-        0x2c96,
-        0x2c98,
-        0x2c9a,
-        0x2c9c,
-        0x2c9e,
-        0x2ca0,
-        0x2ca2,
-        0x2ca4,
-        0x2ca6,
-        0x2ca8,
-        0x2caa,
-        0x2cac,
-        0x2cae,
-        0x2cb0,
-        0x2cb2,
-        0x2cb4,
-        0x2cb6,
-        0x2cb8,
-        0x2cba,
-        0x2cbc,
-        0x2cbe,
-        0x2cc0,
-        0x2cc2,
-        0x2cc4,
-        0x2cc6,
-        0x2cc8,
-        0x2cca,
-        0x2ccc,
-        0x2cce,
-        0x2cd0,
-        0x2cd2,
-        0x2cd4,
-        0x2cd6,
-        0x2cd8,
-        0x2cda,
-        0x2cdc,
-        0x2cde,
-        0x2ce0,
-        0x2ce2,
-        0xfb00,
-        0xfb01,
-        0xfb02,
-        0xfb03,
-        0xfb04,
-        0xfb05,
-        0xfb06,
-        0xfb13,
-        0xfb14,
-        0xfb15,
-        0xfb16,
-        0xfb17,
-        0xff21,
-        0xff22,
-        0xff23,
-        0xff24,
-        0xff25,
-        0xff26,
-        0xff27,
-        0xff28,
-        0xff29,
-        0xff2a,
-        0xff2b,
-        0xff2c,
-        0xff2d,
-        0xff2e,
-        0xff2f,
-        0xff30,
-        0xff31,
-        0xff32,
-        0xff33,
-        0xff34,
-        0xff35,
-        0xff36,
-        0xff37,
-        0xff38,
-        0xff39,
-        0xff3a,
-        0x10400,
-        0x10401,
-        0x10402,
-        0x10403,
-        0x10404,
-        0x10405,
-        0x10406,
-        0x10407,
-        0x10408,
-        0x10409,
-        0x1040a,
-        0x1040b,
-        0x1040c,
-        0x1040d,
-        0x1040e,
-        0x1040f,
-        0x10410,
-        0x10411,
-        0x10412,
-        0x10413,
-        0x10414,
-        0x10415,
-        0x10416,
-        0x10417,
-        0x10418,
-        0x10419,
-        0x1041a,
-        0x1041b,
-        0x1041c,
-        0x1041d,
-        0x1041e,
-        0x1041f,
-        0x10420,
-        0x10421,
-        0x10422,
-        0x10423,
-        0x10424,
-        0x10425,
-        0x10426,
-        0x10427,
-    };
-    
-    private static final int CaseFold1_To[][]  = new int[][] {
-        {0x0061},
-        {0x0062},
-        {0x0063},
-        {0x0064},
-        {0x0065},
-        {0x0066},
-        {0x0067},
-        {0x0068},
-        {0x006a},
-        {0x006b},
-        {0x006c},
-        {0x006d},
-        {0x006e},
-        {0x006f},
-        {0x0070},
-        {0x0071},
-        {0x0072},
-        {0x0073},
-        {0x0074},
-        {0x0075},
-        {0x0076},
-        {0x0077},
-        {0x0078},
-        {0x0079},
-        {0x007a},
-        {0x03bc},
-        {0x00e0},
-        {0x00e1},
-        {0x00e2},
-        {0x00e3},
-        {0x00e4},
-        {0x00e5},
-        {0x00e6},
-        {0x00e7},
-        {0x00e8},
-        {0x00e9},
-        {0x00ea},
-        {0x00eb},
-        {0x00ec},
-        {0x00ed},
-        {0x00ee},
-        {0x00ef},
-        {0x00f0},
-        {0x00f1},
-        {0x00f2},
-        {0x00f3},
-        {0x00f4},
-        {0x00f5},
-        {0x00f6},
-        {0x00f8},
-        {0x00f9},
-        {0x00fa},
-        {0x00fb},
-        {0x00fc},
-        {0x00fd},
-        {0x00fe},
-        {0x0073, 0x0073},
-        {0x0101},
-        {0x0103},
-        {0x0105},
-        {0x0107},
-        {0x0109},
-        {0x010b},
-        {0x010d},
-        {0x010f},
-        {0x0111},
-        {0x0113},
-        {0x0115},
-        {0x0117},
-        {0x0119},
-        {0x011b},
-        {0x011d},
-        {0x011f},
-        {0x0121},
-        {0x0123},
-        {0x0125},
-        {0x0127},
-        {0x0129},
-        {0x012b},
-        {0x012d},
-        {0x012f},
-        {0x0133},
-        {0x0135},
-        {0x0137},
-        {0x013a},
-        {0x013c},
-        {0x013e},
-        {0x0140},
-        {0x0142},
-        {0x0144},
-        {0x0146},
-        {0x0148},
-        {0x02bc, 0x006e},
-        {0x014b},
-        {0x014d},
-        {0x014f},
-        {0x0151},
-        {0x0153},
-        {0x0155},
-        {0x0157},
-        {0x0159},
-        {0x015b},
-        {0x015d},
-        {0x015f},
-        {0x0161},
-        {0x0163},
-        {0x0165},
-        {0x0167},
-        {0x0169},
-        {0x016b},
-        {0x016d},
-        {0x016f},
-        {0x0171},
-        {0x0173},
-        {0x0175},
-        {0x0177},
-        {0x00ff},
-        {0x017a},
-        {0x017c},
-        {0x017e},
-        {0x0073},
-        {0x0253},
-        {0x0183},
-        {0x0185},
-        {0x0254},
-        {0x0188},
-        {0x0256},
-        {0x0257},
-        {0x018c},
-        {0x01dd},
-        {0x0259},
-        {0x025b},
-        {0x0192},
-        {0x0260},
-        {0x0263},
-        {0x0269},
-        {0x0268},
-        {0x0199},
-        {0x026f},
-        {0x0272},
-        {0x0275},
-        {0x01a1},
-        {0x01a3},
-        {0x01a5},
-        {0x0280},
-        {0x01a8},
-        {0x0283},
-        {0x01ad},
-        {0x0288},
-        {0x01b0},
-        {0x028a},
-        {0x028b},
-        {0x01b4},
-        {0x01b6},
-        {0x0292},
-        {0x01b9},
-        {0x01bd},
-        {0x01c6},
-        {0x01c6},
-        {0x01c9},
-        {0x01c9},
-        {0x01cc},
-        {0x01cc},
-        {0x01ce},
-        {0x01d0},
-        {0x01d2},
-        {0x01d4},
-        {0x01d6},
-        {0x01d8},
-        {0x01da},
-        {0x01dc},
-        {0x01df},
-        {0x01e1},
-        {0x01e3},
-        {0x01e5},
-        {0x01e7},
-        {0x01e9},
-        {0x01eb},
-        {0x01ed},
-        {0x01ef},
-        {0x006a, 0x030c},
-        {0x01f3},
-        {0x01f3},
-        {0x01f5},
-        {0x0195},
-        {0x01bf},
-        {0x01f9},
-        {0x01fb},
-        {0x01fd},
-        {0x01ff},
-        {0x0201},
-        {0x0203},
-        {0x0205},
-        {0x0207},
-        {0x0209},
-        {0x020b},
-        {0x020d},
-        {0x020f},
-        {0x0211},
-        {0x0213},
-        {0x0215},
-        {0x0217},
-        {0x0219},
-        {0x021b},
-        {0x021d},
-        {0x021f},
-        {0x019e},
-        {0x0223},
-        {0x0225},
-        {0x0227},
-        {0x0229},
-        {0x022b},
-        {0x022d},
-        {0x022f},
-        {0x0231},
-        {0x0233},
-        {0x023c},
-        {0x019a},
-        {0x0294},
-        {0x03b9},
-        {0x03ac},
-        {0x03ad},
-        {0x03ae},
-        {0x03af},
-        {0x03cc},
-        {0x03cd},
-        {0x03ce},
-        {0x03b9, 0x0308, 0x0301},
-        {0x03b1},
-        {0x03b2},
-        {0x03b3},
-        {0x03b4},
-        {0x03b5},
-        {0x03b6},
-        {0x03b7},
-        {0x03b8},
-        {0x03b9},
-        {0x03ba},
-        {0x03bb},
-        {0x03bc},
-        {0x03bd},
-        {0x03be},
-        {0x03bf},
-        {0x03c0},
-        {0x03c1},
-        {0x03c3},
-        {0x03c4},
-        {0x03c5},
-        {0x03c6},
-        {0x03c7},
-        {0x03c8},
-        {0x03c9},
-        {0x03ca},
-        {0x03cb},
-        {0x03c5, 0x0308, 0x0301},
-        {0x03c3},
-        {0x03b2},
-        {0x03b8},
-        {0x03c6},
-        {0x03c0},
-        {0x03d9},
-        {0x03db},
-        {0x03dd},
-        {0x03df},
-        {0x03e1},
-        {0x03e3},
-        {0x03e5},
-        {0x03e7},
-        {0x03e9},
-        {0x03eb},
-        {0x03ed},
-        {0x03ef},
-        {0x03ba},
-        {0x03c1},
-        {0x03b8},
-        {0x03b5},
-        {0x03f8},
-        {0x03f2},
-        {0x03fb},
-        {0x0450},
-        {0x0451},
-        {0x0452},
-        {0x0453},
-        {0x0454},
-        {0x0455},
-        {0x0456},
-        {0x0457},
-        {0x0458},
-        {0x0459},
-        {0x045a},
-        {0x045b},
-        {0x045c},
-        {0x045d},
-        {0x045e},
-        {0x045f},
-        {0x0430},
-        {0x0431},
-        {0x0432},
-        {0x0433},
-        {0x0434},
-        {0x0435},
-        {0x0436},
-        {0x0437},
-        {0x0438},
-        {0x0439},
-        {0x043a},
-        {0x043b},
-        {0x043c},
-        {0x043d},
-        {0x043e},
-        {0x043f},
-        {0x0440},
-        {0x0441},
-        {0x0442},
-        {0x0443},
-        {0x0444},
-        {0x0445},
-        {0x0446},
-        {0x0447},
-        {0x0448},
-        {0x0449},
-        {0x044a},
-        {0x044b},
-        {0x044c},
-        {0x044d},
-        {0x044e},
-        {0x044f},
-        {0x0461},
-        {0x0463},
-        {0x0465},
-        {0x0467},
-        {0x0469},
-        {0x046b},
-        {0x046d},
-        {0x046f},
-        {0x0471},
-        {0x0473},
-        {0x0475},
-        {0x0477},
-        {0x0479},
-        {0x047b},
-        {0x047d},
-        {0x047f},
-        {0x0481},
-        {0x048b},
-        {0x048d},
-        {0x048f},
-        {0x0491},
-        {0x0493},
-        {0x0495},
-        {0x0497},
-        {0x0499},
-        {0x049b},
-        {0x049d},
-        {0x049f},
-        {0x04a1},
-        {0x04a3},
-        {0x04a5},
-        {0x04a7},
-        {0x04a9},
-        {0x04ab},
-        {0x04ad},
-        {0x04af},
-        {0x04b1},
-        {0x04b3},
-        {0x04b5},
-        {0x04b7},
-        {0x04b9},
-        {0x04bb},
-        {0x04bd},
-        {0x04bf},
-        {0x04c2},
-        {0x04c4},
-        {0x04c6},
-        {0x04c8},
-        {0x04ca},
-        {0x04cc},
-        {0x04ce},
-        {0x04d1},
-        {0x04d3},
-        {0x04d5},
-        {0x04d7},
-        {0x04d9},
-        {0x04db},
-        {0x04dd},
-        {0x04df},
-        {0x04e1},
-        {0x04e3},
-        {0x04e5},
-        {0x04e7},
-        {0x04e9},
-        {0x04eb},
-        {0x04ed},
-        {0x04ef},
-        {0x04f1},
-        {0x04f3},
-        {0x04f5},
-        {0x04f7},
-        {0x04f9},
-        {0x0501},
-        {0x0503},
-        {0x0505},
-        {0x0507},
-        {0x0509},
-        {0x050b},
-        {0x050d},
-        {0x050f},
-        {0x0561},
-        {0x0562},
-        {0x0563},
-        {0x0564},
-        {0x0565},
-        {0x0566},
-        {0x0567},
-        {0x0568},
-        {0x0569},
-        {0x056a},
-        {0x056b},
-        {0x056c},
-        {0x056d},
-        {0x056e},
-        {0x056f},
-        {0x0570},
-        {0x0571},
-        {0x0572},
-        {0x0573},
-        {0x0574},
-        {0x0575},
-        {0x0576},
-        {0x0577},
-        {0x0578},
-        {0x0579},
-        {0x057a},
-        {0x057b},
-        {0x057c},
-        {0x057d},
-        {0x057e},
-        {0x057f},
-        {0x0580},
-        {0x0581},
-        {0x0582},
-        {0x0583},
-        {0x0584},
-        {0x0585},
-        {0x0586},
-        {0x0565, 0x0582},
-        {0x2d00},
-        {0x2d01},
-        {0x2d02},
-        {0x2d03},
-        {0x2d04},
-        {0x2d05},
-        {0x2d06},
-        {0x2d07},
-        {0x2d08},
-        {0x2d09},
-        {0x2d0a},
-        {0x2d0b},
-        {0x2d0c},
-        {0x2d0d},
-        {0x2d0e},
-        {0x2d0f},
-        {0x2d10},
-        {0x2d11},
-        {0x2d12},
-        {0x2d13},
-        {0x2d14},
-        {0x2d15},
-        {0x2d16},
-        {0x2d17},
-        {0x2d18},
-        {0x2d19},
-        {0x2d1a},
-        {0x2d1b},
-        {0x2d1c},
-        {0x2d1d},
-        {0x2d1e},
-        {0x2d1f},
-        {0x2d20},
-        {0x2d21},
-        {0x2d22},
-        {0x2d23},
-        {0x2d24},
-        {0x2d25},
-        {0x1e01},
-        {0x1e03},
-        {0x1e05},
-        {0x1e07},
-        {0x1e09},
-        {0x1e0b},
-        {0x1e0d},
-        {0x1e0f},
-        {0x1e11},
-        {0x1e13},
-        {0x1e15},
-        {0x1e17},
-        {0x1e19},
-        {0x1e1b},
-        {0x1e1d},
-        {0x1e1f},
-        {0x1e21},
-        {0x1e23},
-        {0x1e25},
-        {0x1e27},
-        {0x1e29},
-        {0x1e2b},
-        {0x1e2d},
-        {0x1e2f},
-        {0x1e31},
-        {0x1e33},
-        {0x1e35},
-        {0x1e37},
-        {0x1e39},
-        {0x1e3b},
-        {0x1e3d},
-        {0x1e3f},
-        {0x1e41},
-        {0x1e43},
-        {0x1e45},
-        {0x1e47},
-        {0x1e49},
-        {0x1e4b},
-        {0x1e4d},
-        {0x1e4f},
-        {0x1e51},
-        {0x1e53},
-        {0x1e55},
-        {0x1e57},
-        {0x1e59},
-        {0x1e5b},
-        {0x1e5d},
-        {0x1e5f},
-        {0x1e61},
-        {0x1e63},
-        {0x1e65},
-        {0x1e67},
-        {0x1e69},
-        {0x1e6b},
-        {0x1e6d},
-        {0x1e6f},
-        {0x1e71},
-        {0x1e73},
-        {0x1e75},
-        {0x1e77},
-        {0x1e79},
-        {0x1e7b},
-        {0x1e7d},
-        {0x1e7f},
-        {0x1e81},
-        {0x1e83},
-        {0x1e85},
-        {0x1e87},
-        {0x1e89},
-        {0x1e8b},
-        {0x1e8d},
-        {0x1e8f},
-        {0x1e91},
-        {0x1e93},
-        {0x1e95},
-        {0x0068, 0x0331},
-        {0x0074, 0x0308},
-        {0x0077, 0x030a},
-        {0x0079, 0x030a},
-        {0x0061, 0x02be},
-        {0x1e61},
-        {0x1ea1},
-        {0x1ea3},
-        {0x1ea5},
-        {0x1ea7},
-        {0x1ea9},
-        {0x1eab},
-        {0x1ead},
-        {0x1eaf},
-        {0x1eb1},
-        {0x1eb3},
-        {0x1eb5},
-        {0x1eb7},
-        {0x1eb9},
-        {0x1ebb},
-        {0x1ebd},
-        {0x1ebf},
-        {0x1ec1},
-        {0x1ec3},
-        {0x1ec5},
-        {0x1ec7},
-        {0x1ec9},
-        {0x1ecb},
-        {0x1ecd},
-        {0x1ecf},
-        {0x1ed1},
-        {0x1ed3},
-        {0x1ed5},
-        {0x1ed7},
-        {0x1ed9},
-        {0x1edb},
-        {0x1edd},
-        {0x1edf},
-        {0x1ee1},
-        {0x1ee3},
-        {0x1ee5},
-        {0x1ee7},
-        {0x1ee9},
-        {0x1eeb},
-        {0x1eed},
-        {0x1eef},
-        {0x1ef1},
-        {0x1ef3},
-        {0x1ef5},
-        {0x1ef7},
-        {0x1ef9},
-        {0x1f00},
-        {0x1f01},
-        {0x1f02},
-        {0x1f03},
-        {0x1f04},
-        {0x1f05},
-        {0x1f06},
-        {0x1f07},
-        {0x1f10},
-        {0x1f11},
-        {0x1f12},
-        {0x1f13},
-        {0x1f14},
-        {0x1f15},
-        {0x1f20},
-        {0x1f21},
-        {0x1f22},
-        {0x1f23},
-        {0x1f24},
-        {0x1f25},
-        {0x1f26},
-        {0x1f27},
-        {0x1f30},
-        {0x1f31},
-        {0x1f32},
-        {0x1f33},
-        {0x1f34},
-        {0x1f35},
-        {0x1f36},
-        {0x1f37},
-        {0x1f40},
-        {0x1f41},
-        {0x1f42},
-        {0x1f43},
-        {0x1f44},
-        {0x1f45},
-        {0x03c5, 0x0313},
-        {0x03c5, 0x0313, 0x0300},
-        {0x03c5, 0x0313, 0x0301},
-        {0x03c5, 0x0313, 0x0342},
-        {0x1f51},
-        {0x1f53},
-        {0x1f55},
-        {0x1f57},
-        {0x1f60},
-        {0x1f61},
-        {0x1f62},
-        {0x1f63},
-        {0x1f64},
-        {0x1f65},
-        {0x1f66},
-        {0x1f67},
-        {0x1f00, 0x03b9},
-        {0x1f01, 0x03b9},
-        {0x1f02, 0x03b9},
-        {0x1f03, 0x03b9},
-        {0x1f04, 0x03b9},
-        {0x1f05, 0x03b9},
-        {0x1f06, 0x03b9},
-        {0x1f07, 0x03b9},
-        {0x1f00, 0x03b9},
-        {0x1f01, 0x03b9},
-        {0x1f02, 0x03b9},
-        {0x1f03, 0x03b9},
-        {0x1f04, 0x03b9},
-        {0x1f05, 0x03b9},
-        {0x1f06, 0x03b9},
-        {0x1f07, 0x03b9},
-        {0x1f20, 0x03b9},
-        {0x1f21, 0x03b9},
-        {0x1f22, 0x03b9},
-        {0x1f23, 0x03b9},
-        {0x1f24, 0x03b9},
-        {0x1f25, 0x03b9},
-        {0x1f26, 0x03b9},
-        {0x1f27, 0x03b9},
-        {0x1f20, 0x03b9},
-        {0x1f21, 0x03b9},
-        {0x1f22, 0x03b9},
-        {0x1f23, 0x03b9},
-        {0x1f24, 0x03b9},
-        {0x1f25, 0x03b9},
-        {0x1f26, 0x03b9},
-        {0x1f27, 0x03b9},
-        {0x1f60, 0x03b9},
-        {0x1f61, 0x03b9},
-        {0x1f62, 0x03b9},
-        {0x1f63, 0x03b9},
-        {0x1f64, 0x03b9},
-        {0x1f65, 0x03b9},
-        {0x1f66, 0x03b9},
-        {0x1f67, 0x03b9},
-        {0x1f60, 0x03b9},
-        {0x1f61, 0x03b9},
-        {0x1f62, 0x03b9},
-        {0x1f63, 0x03b9},
-        {0x1f64, 0x03b9},
-        {0x1f65, 0x03b9},
-        {0x1f66, 0x03b9},
-        {0x1f67, 0x03b9},
-        {0x1f70, 0x03b9},
-        {0x03b1, 0x03b9},
-        {0x03ac, 0x03b9},
-        {0x03b1, 0x0342},
-        {0x03b1, 0x0342, 0x03b9},
-        {0x1fb0},
-        {0x1fb1},
-        {0x1f70},
-        {0x1f71},
-        {0x03b1, 0x03b9},
-        {0x03b9},
-        {0x1f74, 0x03b9},
-        {0x03b7, 0x03b9},
-        {0x03ae, 0x03b9},
-        {0x03b7, 0x0342},
-        {0x03b7, 0x0342, 0x03b9},
-        {0x1f72},
-        {0x1f73},
-        {0x1f74},
-        {0x1f75},
-        {0x03b7, 0x03b9},
-        {0x03b9, 0x0308, 0x0300},
-        {0x03b9, 0x0308, 0x0301},
-        {0x03b9, 0x0342},
-        {0x03b9, 0x0308, 0x0342},
-        {0x1fd0},
-        {0x1fd1},
-        {0x1f76},
-        {0x1f77},
-        {0x03c5, 0x0308, 0x0300},
-        {0x03c5, 0x0308, 0x0301},
-        {0x03c1, 0x0313},
-        {0x03c5, 0x0342},
-        {0x03c5, 0x0308, 0x0342},
-        {0x1fe0},
-        {0x1fe1},
-        {0x1f7a},
-        {0x1f7b},
-        {0x1fe5},
-        {0x1f7c, 0x03b9},
-        {0x03c9, 0x03b9},
-        {0x03ce, 0x03b9},
-        {0x03c9, 0x0342},
-        {0x03c9, 0x0342, 0x03b9},
-        {0x1f78},
-        {0x1f79},
-        {0x1f7c},
-        {0x1f7d},
-        {0x03c9, 0x03b9},
-        {0x03c9},
-        {0x006b},
-        {0x00e5},
-        {0x2170},
-        {0x2171},
-        {0x2172},
-        {0x2173},
-        {0x2174},
-        {0x2175},
-        {0x2176},
-        {0x2177},
-        {0x2178},
-        {0x2179},
-        {0x217a},
-        {0x217b},
-        {0x217c},
-        {0x217d},
-        {0x217e},
-        {0x217f},
-        {0x24d0},
-        {0x24d1},
-        {0x24d2},
-        {0x24d3},
-        {0x24d4},
-        {0x24d5},
-        {0x24d6},
-        {0x24d7},
-        {0x24d8},
-        {0x24d9},
-        {0x24da},
-        {0x24db},
-        {0x24dc},
-        {0x24dd},
-        {0x24de},
-        {0x24df},
-        {0x24e0},
-        {0x24e1},
-        {0x24e2},
-        {0x24e3},
-        {0x24e4},
-        {0x24e5},
-        {0x24e6},
-        {0x24e7},
-        {0x24e8},
-        {0x24e9},
-        {0x2c30},
-        {0x2c31},
-        {0x2c32},
-        {0x2c33},
-        {0x2c34},
-        {0x2c35},
-        {0x2c36},
-        {0x2c37},
-        {0x2c38},
-        {0x2c39},
-        {0x2c3a},
-        {0x2c3b},
-        {0x2c3c},
-        {0x2c3d},
-        {0x2c3e},
-        {0x2c3f},
-        {0x2c40},
-        {0x2c41},
-        {0x2c42},
-        {0x2c43},
-        {0x2c44},
-        {0x2c45},
-        {0x2c46},
-        {0x2c47},
-        {0x2c48},
-        {0x2c49},
-        {0x2c4a},
-        {0x2c4b},
-        {0x2c4c},
-        {0x2c4d},
-        {0x2c4e},
-        {0x2c4f},
-        {0x2c50},
-        {0x2c51},
-        {0x2c52},
-        {0x2c53},
-        {0x2c54},
-        {0x2c55},
-        {0x2c56},
-        {0x2c57},
-        {0x2c58},
-        {0x2c59},
-        {0x2c5a},
-        {0x2c5b},
-        {0x2c5c},
-        {0x2c5d},
-        {0x2c5e},
-        {0x2c81},
-        {0x2c83},
-        {0x2c85},
-        {0x2c87},
-        {0x2c89},
-        {0x2c8b},
-        {0x2c8d},
-        {0x2c8f},
-        {0x2c91},
-        {0x2c93},
-        {0x2c95},
-        {0x2c97},
-        {0x2c99},
-        {0x2c9b},
-        {0x2c9d},
-        {0x2c9f},
-        {0x2ca1},
-        {0x2ca3},
-        {0x2ca5},
-        {0x2ca7},
-        {0x2ca9},
-        {0x2cab},
-        {0x2cad},
-        {0x2caf},
-        {0x2cb1},
-        {0x2cb3},
-        {0x2cb5},
-        {0x2cb7},
-        {0x2cb9},
-        {0x2cbb},
-        {0x2cbd},
-        {0x2cbf},
-        {0x2cc1},
-        {0x2cc3},
-        {0x2cc5},
-        {0x2cc7},
-        {0x2cc9},
-        {0x2ccb},
-        {0x2ccd},
-        {0x2ccf},
-        {0x2cd1},
-        {0x2cd3},
-        {0x2cd5},
-        {0x2cd7},
-        {0x2cd9},
-        {0x2cdb},
-        {0x2cdd},
-        {0x2cdf},
-        {0x2ce1},
-        {0x2ce3},
-        {0x0066, 0x0066},
-        {0x0066, 0x0069},
-        {0x0066, 0x006c},
-        {0x0066, 0x0066, 0x0069},
-        {0x0066, 0x0066, 0x006c},
-        {0x0073, 0x0074},
-        {0x0073, 0x0074},
-        {0x0574, 0x0576},
-        {0x0574, 0x0565},
-        {0x0574, 0x056b},
-        {0x057e, 0x0576},
-        {0x0574, 0x056d},
-        {0xff41},
-        {0xff42},
-        {0xff43},
-        {0xff44},
-        {0xff45},
-        {0xff46},
-        {0xff47},
-        {0xff48},
-        {0xff49},
-        {0xff4a},
-        {0xff4b},
-        {0xff4c},
-        {0xff4d},
-        {0xff4e},
-        {0xff4f},
-        {0xff50},
-        {0xff51},
-        {0xff52},
-        {0xff53},
-        {0xff54},
-        {0xff55},
-        {0xff56},
-        {0xff57},
-        {0xff58},
-        {0xff59},
-        {0xff5a},
-        {0x10428},
-        {0x10429},
-        {0x1042a},
-        {0x1042b},
-        {0x1042c},
-        {0x1042d},
-        {0x1042e},
-        {0x1042f},
-        {0x10430},
-        {0x10431},
-        {0x10432},
-        {0x10433},
-        {0x10434},
-        {0x10435},
-        {0x10436},
-        {0x10437},
-        {0x10438},
-        {0x10439},
-        {0x1043a},
-        {0x1043b},
-        {0x1043c},
-        {0x1043d},
-        {0x1043e},
-        {0x1043f},
-        {0x10440},
-        {0x10441},
-        {0x10442},
-        {0x10443},
-        {0x10444},
-        {0x10445},
-        {0x10446},
-        {0x10447},
-        {0x10448},
-        {0x10449},
-        {0x1044a},
-        {0x1044b},
-        {0x1044c},
-        {0x1044d},
-        {0x1044e},
-        {0x1044f}
-    };
-    
-    private static final int[] CaseFold_Locale_From = new int[] {
-        0x0049,
-        0x0130
-    };
-
-    private static final int[][] CaseFold_Locale_To = new int[][] {
-        {0x0069},
-        {0x0069, 0x0307}
-    };
-    
-    static final int[] CaseUnfold_11_From = new int[] {
-        0x0061,
-        0x0062,
-        0x0063,
-        0x0064,
-        0x0065,
-        0x0066,
-        0x0067,
-        0x0068,
-        0x006a,
-        0x006b,
-        0x006c,
-        0x006d,
-        0x006e,
-        0x006f,
-        0x0070,
-        0x0071,
-        0x0072,
-        0x0073,
-        0x0074,
-        0x0075,
-        0x0076,
-        0x0077,
-        0x0078,
-        0x0079,
-        0x007a,
-        0x00e0,
-        0x00e1,
-        0x00e2,
-        0x00e3,
-        0x00e4,
-        0x00e5,
-        0x00e6,
-        0x00e7,
-        0x00e8,
-        0x00e9,
-        0x00ea,
-        0x00eb,
-        0x00ec,
-        0x00ed,
-        0x00ee,
-        0x00ef,
-        0x00f0,
-        0x00f1,
-        0x00f2,
-        0x00f3,
-        0x00f4,
-        0x00f5,
-        0x00f6,
-        0x00f8,
-        0x00f9,
-        0x00fa,
-        0x00fb,
-        0x00fc,
-        0x00fd,
-        0x00fe,
-        0x00ff,
-        0x0101,
-        0x0103,
-        0x0105,
-        0x0107,
-        0x0109,
-        0x010b,
-        0x010d,
-        0x010f,
-        0x0111,
-        0x0113,
-        0x0115,
-        0x0117,
-        0x0119,
-        0x011b,
-        0x011d,
-        0x011f,
-        0x0121,
-        0x0123,
-        0x0125,
-        0x0127,
-        0x0129,
-        0x012b,
-        0x012d,
-        0x012f,
-        0x0133,
-        0x0135,
-        0x0137,
-        0x013a,
-        0x013c,
-        0x013e,
-        0x0140,
-        0x0142,
-        0x0144,
-        0x0146,
-        0x0148,
-        0x014b,
-        0x014d,
-        0x014f,
-        0x0151,
-        0x0153,
-        0x0155,
-        0x0157,
-        0x0159,
-        0x015b,
-        0x015d,
-        0x015f,
-        0x0161,
-        0x0163,
-        0x0165,
-        0x0167,
-        0x0169,
-        0x016b,
-        0x016d,
-        0x016f,
-        0x0171,
-        0x0173,
-        0x0175,
-        0x0177,
-        0x017a,
-        0x017c,
-        0x017e,
-        0x0183,
-        0x0185,
-        0x0188,
-        0x018c,
-        0x0192,
-        0x0195,
-        0x0199,
-        0x019a,
-        0x019e,
-        0x01a1,
-        0x01a3,
-        0x01a5,
-        0x01a8,
-        0x01ad,
-        0x01b0,
-        0x01b4,
-        0x01b6,
-        0x01b9,
-        0x01bd,
-        0x01bf,
-        0x01c6,
-        0x01c9,
-        0x01cc,
-        0x01ce,
-        0x01d0,
-        0x01d2,
-        0x01d4,
-        0x01d6,
-        0x01d8,
-        0x01da,
-        0x01dc,
-        0x01dd,
-        0x01df,
-        0x01e1,
-        0x01e3,
-        0x01e5,
-        0x01e7,
-        0x01e9,
-        0x01eb,
-        0x01ed,
-        0x01ef,
-        0x01f3,
-        0x01f5,
-        0x01f9,
-        0x01fb,
-        0x01fd,
-        0x01ff,
-        0x0201,
-        0x0203,
-        0x0205,
-        0x0207,
-        0x0209,
-        0x020b,
-        0x020d,
-        0x020f,
-        0x0211,
-        0x0213,
-        0x0215,
-        0x0217,
-        0x0219,
-        0x021b,
-        0x021d,
-        0x021f,
-        0x0223,
-        0x0225,
-        0x0227,
-        0x0229,
-        0x022b,
-        0x022d,
-        0x022f,
-        0x0231,
-        0x0233,
-        0x023c,
-        0x0253,
-        0x0254,
-        0x0256,
-        0x0257,
-        0x0259,
-        0x025b,
-        0x0260,
-        0x0263,
-        0x0268,
-        0x0269,
-        0x026f,
-        0x0272,
-        0x0275,
-        0x0280,
-        0x0283,
-        0x0288,
-        0x028a,
-        0x028b,
-        0x0292,
-        0x0294,
-        0x03ac,
-        0x03ad,
-        0x03ae,
-        0x03af,
-        0x03b1,
-        0x03b2,
-        0x03b3,
-        0x03b4,
-        0x03b5,
-        0x03b6,
-        0x03b7,
-        0x03b8,
-        0x03b9,
-        0x03ba,
-        0x03bb,
-        0x03bc,
-        0x03bd,
-        0x03be,
-        0x03bf,
-        0x03c0,
-        0x03c1,
-        0x03c3,
-        0x03c4,
-        0x03c5,
-        0x03c6,
-        0x03c7,
-        0x03c8,
-        0x03c9,
-        0x03ca,
-        0x03cb,
-        0x03cc,
-        0x03cd,
-        0x03ce,
-        0x03d9,
-        0x03db,
-        0x03dd,
-        0x03df,
-        0x03e1,
-        0x03e3,
-        0x03e5,
-        0x03e7,
-        0x03e9,
-        0x03eb,
-        0x03ed,
-        0x03ef,
-        0x03f2,
-        0x03f8,
-        0x03fb,
-        0x0430,
-        0x0431,
-        0x0432,
-        0x0433,
-        0x0434,
-        0x0435,
-        0x0436,
-        0x0437,
-        0x0438,
-        0x0439,
-        0x043a,
-        0x043b,
-        0x043c,
-        0x043d,
-        0x043e,
-        0x043f,
-        0x0440,
-        0x0441,
-        0x0442,
-        0x0443,
-        0x0444,
-        0x0445,
-        0x0446,
-        0x0447,
-        0x0448,
-        0x0449,
-        0x044a,
-        0x044b,
-        0x044c,
-        0x044d,
-        0x044e,
-        0x044f,
-        0x0450,
-        0x0451,
-        0x0452,
-        0x0453,
-        0x0454,
-        0x0455,
-        0x0456,
-        0x0457,
-        0x0458,
-        0x0459,
-        0x045a,
-        0x045b,
-        0x045c,
-        0x045d,
-        0x045e,
-        0x045f,
-        0x0461,
-        0x0463,
-        0x0465,
-        0x0467,
-        0x0469,
-        0x046b,
-        0x046d,
-        0x046f,
-        0x0471,
-        0x0473,
-        0x0475,
-        0x0477,
-        0x0479,
-        0x047b,
-        0x047d,
-        0x047f,
-        0x0481,
-        0x048b,
-        0x048d,
-        0x048f,
-        0x0491,
-        0x0493,
-        0x0495,
-        0x0497,
-        0x0499,
-        0x049b,
-        0x049d,
-        0x049f,
-        0x04a1,
-        0x04a3,
-        0x04a5,
-        0x04a7,
-        0x04a9,
-        0x04ab,
-        0x04ad,
-        0x04af,
-        0x04b1,
-        0x04b3,
-        0x04b5,
-        0x04b7,
-        0x04b9,
-        0x04bb,
-        0x04bd,
-        0x04bf,
-        0x04c2,
-        0x04c4,
-        0x04c6,
-        0x04c8,
-        0x04ca,
-        0x04cc,
-        0x04ce,
-        0x04d1,
-        0x04d3,
-        0x04d5,
-        0x04d7,
-        0x04d9,
-        0x04db,
-        0x04dd,
-        0x04df,
-        0x04e1,
-        0x04e3,
-        0x04e5,
-        0x04e7,
-        0x04e9,
-        0x04eb,
-        0x04ed,
-        0x04ef,
-        0x04f1,
-        0x04f3,
-        0x04f5,
-        0x04f7,
-        0x04f9,
-        0x0501,
-        0x0503,
-        0x0505,
-        0x0507,
-        0x0509,
-        0x050b,
-        0x050d,
-        0x050f,
-        0x0561,
-        0x0562,
-        0x0563,
-        0x0564,
-        0x0565,
-        0x0566,
-        0x0567,
-        0x0568,
-        0x0569,
-        0x056a,
-        0x056b,
-        0x056c,
-        0x056d,
-        0x056e,
-        0x056f,
-        0x0570,
-        0x0571,
-        0x0572,
-        0x0573,
-        0x0574,
-        0x0575,
-        0x0576,
-        0x0577,
-        0x0578,
-        0x0579,
-        0x057a,
-        0x057b,
-        0x057c,
-        0x057d,
-        0x057e,
-        0x057f,
-        0x0580,
-        0x0581,
-        0x0582,
-        0x0583,
-        0x0584,
-        0x0585,
-        0x0586,
-        0x1e01,
-        0x1e03,
-        0x1e05,
-        0x1e07,
-        0x1e09,
-        0x1e0b,
-        0x1e0d,
-        0x1e0f,
-        0x1e11,
-        0x1e13,
-        0x1e15,
-        0x1e17,
-        0x1e19,
-        0x1e1b,
-        0x1e1d,
-        0x1e1f,
-        0x1e21,
-        0x1e23,
-        0x1e25,
-        0x1e27,
-        0x1e29,
-        0x1e2b,
-        0x1e2d,
-        0x1e2f,
-        0x1e31,
-        0x1e33,
-        0x1e35,
-        0x1e37,
-        0x1e39,
-        0x1e3b,
-        0x1e3d,
-        0x1e3f,
-        0x1e41,
-        0x1e43,
-        0x1e45,
-        0x1e47,
-        0x1e49,
-        0x1e4b,
-        0x1e4d,
-        0x1e4f,
-        0x1e51,
-        0x1e53,
-        0x1e55,
-        0x1e57,
-        0x1e59,
-        0x1e5b,
-        0x1e5d,
-        0x1e5f,
-        0x1e61,
-        0x1e63,
-        0x1e65,
-        0x1e67,
-        0x1e69,
-        0x1e6b,
-        0x1e6d,
-        0x1e6f,
-        0x1e71,
-        0x1e73,
-        0x1e75,
-        0x1e77,
-        0x1e79,
-        0x1e7b,
-        0x1e7d,
-        0x1e7f,
-        0x1e81,
-        0x1e83,
-        0x1e85,
-        0x1e87,
-        0x1e89,
-        0x1e8b,
-        0x1e8d,
-        0x1e8f,
-        0x1e91,
-        0x1e93,
-        0x1e95,
-        0x1ea1,
-        0x1ea3,
-        0x1ea5,
-        0x1ea7,
-        0x1ea9,
-        0x1eab,
-        0x1ead,
-        0x1eaf,
-        0x1eb1,
-        0x1eb3,
-        0x1eb5,
-        0x1eb7,
-        0x1eb9,
-        0x1ebb,
-        0x1ebd,
-        0x1ebf,
-        0x1ec1,
-        0x1ec3,
-        0x1ec5,
-        0x1ec7,
-        0x1ec9,
-        0x1ecb,
-        0x1ecd,
-        0x1ecf,
-        0x1ed1,
-        0x1ed3,
-        0x1ed5,
-        0x1ed7,
-        0x1ed9,
-        0x1edb,
-        0x1edd,
-        0x1edf,
-        0x1ee1,
-        0x1ee3,
-        0x1ee5,
-        0x1ee7,
-        0x1ee9,
-        0x1eeb,
-        0x1eed,
-        0x1eef,
-        0x1ef1,
-        0x1ef3,
-        0x1ef5,
-        0x1ef7,
-        0x1ef9,
-        0x1f00,
-        0x1f01,
-        0x1f02,
-        0x1f03,
-        0x1f04,
-        0x1f05,
-        0x1f06,
-        0x1f07,
-        0x1f10,
-        0x1f11,
-        0x1f12,
-        0x1f13,
-        0x1f14,
-        0x1f15,
-        0x1f20,
-        0x1f21,
-        0x1f22,
-        0x1f23,
-        0x1f24,
-        0x1f25,
-        0x1f26,
-        0x1f27,
-        0x1f30,
-        0x1f31,
-        0x1f32,
-        0x1f33,
-        0x1f34,
-        0x1f35,
-        0x1f36,
-        0x1f37,
-        0x1f40,
-        0x1f41,
-        0x1f42,
-        0x1f43,
-        0x1f44,
-        0x1f45,
-        0x1f51,
-        0x1f53,
-        0x1f55,
-        0x1f57,
-        0x1f60,
-        0x1f61,
-        0x1f62,
-        0x1f63,
-        0x1f64,
-        0x1f65,
-        0x1f66,
-        0x1f67,
-        0x1f70,
-        0x1f71,
-        0x1f72,
-        0x1f73,
-        0x1f74,
-        0x1f75,
-        0x1f76,
-        0x1f77,
-        0x1f78,
-        0x1f79,
-        0x1f7a,
-        0x1f7b,
-        0x1f7c,
-        0x1f7d,
-        0x1fb0,
-        0x1fb1,
-        0x1fd0,
-        0x1fd1,
-        0x1fe0,
-        0x1fe1,
-        0x1fe5,
-        0x2170,
-        0x2171,
-        0x2172,
-        0x2173,
-        0x2174,
-        0x2175,
-        0x2176,
-        0x2177,
-        0x2178,
-        0x2179,
-        0x217a,
-        0x217b,
-        0x217c,
-        0x217d,
-        0x217e,
-        0x217f,
-        0x24d0,
-        0x24d1,
-        0x24d2,
-        0x24d3,
-        0x24d4,
-        0x24d5,
-        0x24d6,
-        0x24d7,
-        0x24d8,
-        0x24d9,
-        0x24da,
-        0x24db,
-        0x24dc,
-        0x24dd,
-        0x24de,
-        0x24df,
-        0x24e0,
-        0x24e1,
-        0x24e2,
-        0x24e3,
-        0x24e4,
-        0x24e5,
-        0x24e6,
-        0x24e7,
-        0x24e8,
-        0x24e9,
-        0x2c30,
-        0x2c31,
-        0x2c32,
-        0x2c33,
-        0x2c34,
-        0x2c35,
-        0x2c36,
-        0x2c37,
-        0x2c38,
-        0x2c39,
-        0x2c3a,
-        0x2c3b,
-        0x2c3c,
-        0x2c3d,
-        0x2c3e,
-        0x2c3f,
-        0x2c40,
-        0x2c41,
-        0x2c42,
-        0x2c43,
-        0x2c44,
-        0x2c45,
-        0x2c46,
-        0x2c47,
-        0x2c48,
-        0x2c49,
-        0x2c4a,
-        0x2c4b,
-        0x2c4c,
-        0x2c4d,
-        0x2c4e,
-        0x2c4f,
-        0x2c50,
-        0x2c51,
-        0x2c52,
-        0x2c53,
-        0x2c54,
-        0x2c55,
-        0x2c56,
-        0x2c57,
-        0x2c58,
-        0x2c59,
-        0x2c5a,
-        0x2c5b,
-        0x2c5c,
-        0x2c5d,
-        0x2c5e,
-        0x2c81,
-        0x2c83,
-        0x2c85,
-        0x2c87,
-        0x2c89,
-        0x2c8b,
-        0x2c8d,
-        0x2c8f,
-        0x2c91,
-        0x2c93,
-        0x2c95,
-        0x2c97,
-        0x2c99,
-        0x2c9b,
-        0x2c9d,
-        0x2c9f,
-        0x2ca1,
-        0x2ca3,
-        0x2ca5,
-        0x2ca7,
-        0x2ca9,
-        0x2cab,
-        0x2cad,
-        0x2caf,
-        0x2cb1,
-        0x2cb3,
-        0x2cb5,
-        0x2cb7,
-        0x2cb9,
-        0x2cbb,
-        0x2cbd,
-        0x2cbf,
-        0x2cc1,
-        0x2cc3,
-        0x2cc5,
-        0x2cc7,
-        0x2cc9,
-        0x2ccb,
-        0x2ccd,
-        0x2ccf,
-        0x2cd1,
-        0x2cd3,
-        0x2cd5,
-        0x2cd7,
-        0x2cd9,
-        0x2cdb,
-        0x2cdd,
-        0x2cdf,
-        0x2ce1,
-        0x2ce3,
-        0x2d00,
-        0x2d01,
-        0x2d02,
-        0x2d03,
-        0x2d04,
-        0x2d05,
-        0x2d06,
-        0x2d07,
-        0x2d08,
-        0x2d09,
-        0x2d0a,
-        0x2d0b,
-        0x2d0c,
-        0x2d0d,
-        0x2d0e,
-        0x2d0f,
-        0x2d10,
-        0x2d11,
-        0x2d12,
-        0x2d13,
-        0x2d14,
-        0x2d15,
-        0x2d16,
-        0x2d17,
-        0x2d18,
-        0x2d19,
-        0x2d1a,
-        0x2d1b,
-        0x2d1c,
-        0x2d1d,
-        0x2d1e,
-        0x2d1f,
-        0x2d20,
-        0x2d21,
-        0x2d22,
-        0x2d23,
-        0x2d24,
-        0x2d25,
-        0xff41,
-        0xff42,
-        0xff43,
-        0xff44,
-        0xff45,
-        0xff46,
-        0xff47,
-        0xff48,
-        0xff49,
-        0xff4a,
-        0xff4b,
-        0xff4c,
-        0xff4d,
-        0xff4e,
-        0xff4f,
-        0xff50,
-        0xff51,
-        0xff52,
-        0xff53,
-        0xff54,
-        0xff55,
-        0xff56,
-        0xff57,
-        0xff58,
-        0xff59,
-        0xff5a,
-        0x10428,
-        0x10429,
-        0x1042a,
-        0x1042b,
-        0x1042c,
-        0x1042d,
-        0x1042e,
-        0x1042f,
-        0x10430,
-        0x10431,
-        0x10432,
-        0x10433,
-        0x10434,
-        0x10435,
-        0x10436,
-        0x10437,
-        0x10438,
-        0x10439,
-        0x1043a,
-        0x1043b,
-        0x1043c,
-        0x1043d,
-        0x1043e,
-        0x1043f,
-        0x10440,
-        0x10441,
-        0x10442,
-        0x10443,
-        0x10444,
-        0x10445,
-        0x10446,
-        0x10447,
-        0x10448,
-        0x10449,
-        0x1044a,
-        0x1044b,
-        0x1044c,
-        0x1044d,
-        0x1044e,
-        0x1044f
-    };
-    
-    static final int CaseUnfold_11_To[][] = new int[][] {
-        {0x0041},
-        {0x0042},
-        {0x0043},
-        {0x0044},
-        {0x0045},
-        {0x0046},
-        {0x0047},
-        {0x0048},
-        {0x004a},
-        {0x212a, 0x004b},
-        {0x004c},
-        {0x004d},
-        {0x004e},
-        {0x004f},
-        {0x0050},
-        {0x0051},
-        {0x0052},
-        {0x0053, 0x017f},
-        {0x0054},
-        {0x0055},
-        {0x0056},
-        {0x0057},
-        {0x0058},
-        {0x0059},
-        {0x005a},
-        {0x00c0},
-        {0x00c1},
-        {0x00c2},
-        {0x00c3},
-        {0x00c4},
-        {0x212b, 0x00c5},
-        {0x00c6},
-        {0x00c7},
-        {0x00c8},
-        {0x00c9},
-        {0x00ca},
-        {0x00cb},
-        {0x00cc},
-        {0x00cd},
-        {0x00ce},
-        {0x00cf},
-        {0x00d0},
-        {0x00d1},
-        {0x00d2},
-        {0x00d3},
-        {0x00d4},
-        {0x00d5},
-        {0x00d6},
-        {0x00d8},
-        {0x00d9},
-        {0x00da},
-        {0x00db},
-        {0x00dc},
-        {0x00dd},
-        {0x00de},
-        {0x0178},
-        {0x0100},
-        {0x0102},
-        {0x0104},
-        {0x0106},
-        {0x0108},
-        {0x010a},
-        {0x010c},
-        {0x010e},
-        {0x0110},
-        {0x0112},
-        {0x0114},
-        {0x0116},
-        {0x0118},
-        {0x011a},
-        {0x011c},
-        {0x011e},
-        {0x0120},
-        {0x0122},
-        {0x0124},
-        {0x0126},
-        {0x0128},
-        {0x012a},
-        {0x012c},
-        {0x012e},
-        {0x0132},
-        {0x0134},
-        {0x0136},
-        {0x0139},
-        {0x013b},
-        {0x013d},
-        {0x013f},
-        {0x0141},
-        {0x0143},
-        {0x0145},
-        {0x0147},
-        {0x014a},
-        {0x014c},
-        {0x014e},
-        {0x0150},
-        {0x0152},
-        {0x0154},
-        {0x0156},
-        {0x0158},
-        {0x015a},
-        {0x015c},
-        {0x015e},
-        {0x0160},
-        {0x0162},
-        {0x0164},
-        {0x0166},
-        {0x0168},
-        {0x016a},
-        {0x016c},
-        {0x016e},
-        {0x0170},
-        {0x0172},
-        {0x0174},
-        {0x0176},
-        {0x0179},
-        {0x017b},
-        {0x017d},
-        {0x0182},
-        {0x0184},
-        {0x0187},
-        {0x018b},
-        {0x0191},
-        {0x01f6},
-        {0x0198},
-        {0x023d},
-        {0x0220},
-        {0x01a0},
-        {0x01a2},
-        {0x01a4},
-        {0x01a7},
-        {0x01ac},
-        {0x01af},
-        {0x01b3},
-        {0x01b5},
-        {0x01b8},
-        {0x01bc},
-        {0x01f7},
-        {0x01c4, 0x01c5},
-        {0x01c7, 0x01c8},
-        {0x01ca, 0x01cb},
-        {0x01cd},
-        {0x01cf},
-        {0x01d1},
-        {0x01d3},
-        {0x01d5},
-        {0x01d7},
-        {0x01d9},
-        {0x01db},
-        {0x018e},
-        {0x01de},
-        {0x01e0},
-        {0x01e2},
-        {0x01e4},
-        {0x01e6},
-        {0x01e8},
-        {0x01ea},
-        {0x01ec},
-        {0x01ee},
-        {0x01f1, 0x01f2},
-        {0x01f4},
-        {0x01f8},
-        {0x01fa},
-        {0x01fc},
-        {0x01fe},
-        {0x0200},
-        {0x0202},
-        {0x0204},
-        {0x0206},
-        {0x0208},
-        {0x020a},
-        {0x020c},
-        {0x020e},
-        {0x0210},
-        {0x0212},
-        {0x0214},
-        {0x0216},
-        {0x0218},
-        {0x021a},
-        {0x021c},
-        {0x021e},
-        {0x0222},
-        {0x0224},
-        {0x0226},
-        {0x0228},
-        {0x022a},
-        {0x022c},
-        {0x022e},
-        {0x0230},
-        {0x0232},
-        {0x023b},
-        {0x0181},
-        {0x0186},
-        {0x0189},
-        {0x018a},
-        {0x018f},
-        {0x0190},
-        {0x0193},
-        {0x0194},
-        {0x0197},
-        {0x0196},
-        {0x019c},
-        {0x019d},
-        {0x019f},
-        {0x01a6},
-        {0x01a9},
-        {0x01ae},
-        {0x01b1},
-        {0x01b2},
-        {0x01b7},
-        {0x0241},
-        {0x0386},
-        {0x0388},
-        {0x0389},
-        {0x038a},
-        {0x0391},
-        {0x0392, 0x03d0},
-        {0x0393},
-        {0x0394},
-        {0x03f5, 0x0395},
-        {0x0396},
-        {0x0397},
-        {0x03f4, 0x0398, 0x03d1},
-        {0x1fbe, 0x0399, 0x0345},
-        {0x03f0, 0x039a},
-        {0x039b},
-        {0x00b5, 0x039c},
-        {0x039d},
-        {0x039e},
-        {0x039f},
-        {0x03a0, 0x03d6},
-        {0x03f1, 0x03a1},
-        {0x03a3, 0x03c2},
-        {0x03a4},
-        {0x03a5},
-        {0x03a6, 0x03d5},
-        {0x03a7},
-        {0x03a8},
-        {0x03a9, 0x2126},
-        {0x03aa},
-        {0x03ab},
-        {0x038c},
-        {0x038e},
-        {0x038f},
-        {0x03d8},
-        {0x03da},
-        {0x03dc},
-        {0x03de},
-        {0x03e0},
-        {0x03e2},
-        {0x03e4},
-        {0x03e6},
-        {0x03e8},
-        {0x03ea},
-        {0x03ec},
-        {0x03ee},
-        {0x03f9},
-        {0x03f7},
-        {0x03fa},
-        {0x0410},
-        {0x0411},
-        {0x0412},
-        {0x0413},
-        {0x0414},
-        {0x0415},
-        {0x0416},
-        {0x0417},
-        {0x0418},
-        {0x0419},
-        {0x041a},
-        {0x041b},
-        {0x041c},
-        {0x041d},
-        {0x041e},
-        {0x041f},
-        {0x0420},
-        {0x0421},
-        {0x0422},
-        {0x0423},
-        {0x0424},
-        {0x0425},
-        {0x0426},
-        {0x0427},
-        {0x0428},
-        {0x0429},
-        {0x042a},
-        {0x042b},
-        {0x042c},
-        {0x042d},
-        {0x042e},
-        {0x042f},
-        {0x0400},
-        {0x0401},
-        {0x0402},
-        {0x0403},
-        {0x0404},
-        {0x0405},
-        {0x0406},
-        {0x0407},
-        {0x0408},
-        {0x0409},
-        {0x040a},
-        {0x040b},
-        {0x040c},
-        {0x040d},
-        {0x040e},
-        {0x040f},
-        {0x0460},
-        {0x0462},
-        {0x0464},
-        {0x0466},
-        {0x0468},
-        {0x046a},
-        {0x046c},
-        {0x046e},
-        {0x0470},
-        {0x0472},
-        {0x0474},
-        {0x0476},
-        {0x0478},
-        {0x047a},
-        {0x047c},
-        {0x047e},
-        {0x0480},
-        {0x048a},
-        {0x048c},
-        {0x048e},
-        {0x0490},
-        {0x0492},
-        {0x0494},
-        {0x0496},
-        {0x0498},
-        {0x049a},
-        {0x049c},
-        {0x049e},
-        {0x04a0},
-        {0x04a2},
-        {0x04a4},
-        {0x04a6},
-        {0x04a8},
-        {0x04aa},
-        {0x04ac},
-        {0x04ae},
-        {0x04b0},
-        {0x04b2},
-        {0x04b4},
-        {0x04b6},
-        {0x04b8},
-        {0x04ba},
-        {0x04bc},
-        {0x04be},
-        {0x04c1},
-        {0x04c3},
-        {0x04c5},
-        {0x04c7},
-        {0x04c9},
-        {0x04cb},
-        {0x04cd},
-        {0x04d0},
-        {0x04d2},
-        {0x04d4},
-        {0x04d6},
-        {0x04d8},
-        {0x04da},
-        {0x04dc},
-        {0x04de},
-        {0x04e0},
-        {0x04e2},
-        {0x04e4},
-        {0x04e6},
-        {0x04e8},
-        {0x04ea},
-        {0x04ec},
-        {0x04ee},
-        {0x04f0},
-        {0x04f2},
-        {0x04f4},
-        {0x04f6},
-        {0x04f8},
-        {0x0500},
-        {0x0502},
-        {0x0504},
-        {0x0506},
-        {0x0508},
-        {0x050a},
-        {0x050c},
-        {0x050e},
-        {0x0531},
-        {0x0532},
-        {0x0533},
-        {0x0534},
-        {0x0535},
-        {0x0536},
-        {0x0537},
-        {0x0538},
-        {0x0539},
-        {0x053a},
-        {0x053b},
-        {0x053c},
-        {0x053d},
-        {0x053e},
-        {0x053f},
-        {0x0540},
-        {0x0541},
-        {0x0542},
-        {0x0543},
-        {0x0544},
-        {0x0545},
-        {0x0546},
-        {0x0547},
-        {0x0548},
-        {0x0549},
-        {0x054a},
-        {0x054b},
-        {0x054c},
-        {0x054d},
-        {0x054e},
-        {0x054f},
-        {0x0550},
-        {0x0551},
-        {0x0552},
-        {0x0553},
-        {0x0554},
-        {0x0555},
-        {0x0556},
-        {0x1e00},
-        {0x1e02},
-        {0x1e04},
-        {0x1e06},
-        {0x1e08},
-        {0x1e0a},
-        {0x1e0c},
-        {0x1e0e},
-        {0x1e10},
-        {0x1e12},
-        {0x1e14},
-        {0x1e16},
-        {0x1e18},
-        {0x1e1a},
-        {0x1e1c},
-        {0x1e1e},
-        {0x1e20},
-        {0x1e22},
-        {0x1e24},
-        {0x1e26},
-        {0x1e28},
-        {0x1e2a},
-        {0x1e2c},
-        {0x1e2e},
-        {0x1e30},
-        {0x1e32},
-        {0x1e34},
-        {0x1e36},
-        {0x1e38},
-        {0x1e3a},
-        {0x1e3c},
-        {0x1e3e},
-        {0x1e40},
-        {0x1e42},
-        {0x1e44},
-        {0x1e46},
-        {0x1e48},
-        {0x1e4a},
-        {0x1e4c},
-        {0x1e4e},
-        {0x1e50},
-        {0x1e52},
-        {0x1e54},
-        {0x1e56},
-        {0x1e58},
-        {0x1e5a},
-        {0x1e5c},
-        {0x1e5e},
-        {0x1e9b, 0x1e60},
-        {0x1e62},
-        {0x1e64},
-        {0x1e66},
-        {0x1e68},
-        {0x1e6a},
-        {0x1e6c},
-        {0x1e6e},
-        {0x1e70},
-        {0x1e72},
-        {0x1e74},
-        {0x1e76},
-        {0x1e78},
-        {0x1e7a},
-        {0x1e7c},
-        {0x1e7e},
-        {0x1e80},
-        {0x1e82},
-        {0x1e84},
-        {0x1e86},
-        {0x1e88},
-        {0x1e8a},
-        {0x1e8c},
-        {0x1e8e},
-        {0x1e90},
-        {0x1e92},
-        {0x1e94},
-        {0x1ea0},
-        {0x1ea2},
-        {0x1ea4},
-        {0x1ea6},
-        {0x1ea8},
-        {0x1eaa},
-        {0x1eac},
-        {0x1eae},
-        {0x1eb0},
-        {0x1eb2},
-        {0x1eb4},
-        {0x1eb6},
-        {0x1eb8},
-        {0x1eba},
-        {0x1ebc},
-        {0x1ebe},
-        {0x1ec0},
-        {0x1ec2},
-        {0x1ec4},
-        {0x1ec6},
-        {0x1ec8},
-        {0x1eca},
-        {0x1ecc},
-        {0x1ece},
-        {0x1ed0},
-        {0x1ed2},
-        {0x1ed4},
-        {0x1ed6},
-        {0x1ed8},
-        {0x1eda},
-        {0x1edc},
-        {0x1ede},
-        {0x1ee0},
-        {0x1ee2},
-        {0x1ee4},
-        {0x1ee6},
-        {0x1ee8},
-        {0x1eea},
-        {0x1eec},
-        {0x1eee},
-        {0x1ef0},
-        {0x1ef2},
-        {0x1ef4},
-        {0x1ef6},
-        {0x1ef8},
-        {0x1f08},
-        {0x1f09},
-        {0x1f0a},
-        {0x1f0b},
-        {0x1f0c},
-        {0x1f0d},
-        {0x1f0e},
-        {0x1f0f},
-        {0x1f18},
-        {0x1f19},
-        {0x1f1a},
-        {0x1f1b},
-        {0x1f1c},
-        {0x1f1d},
-        {0x1f28},
-        {0x1f29},
-        {0x1f2a},
-        {0x1f2b},
-        {0x1f2c},
-        {0x1f2d},
-        {0x1f2e},
-        {0x1f2f},
-        {0x1f38},
-        {0x1f39},
-        {0x1f3a},
-        {0x1f3b},
-        {0x1f3c},
-        {0x1f3d},
-        {0x1f3e},
-        {0x1f3f},
-        {0x1f48},
-        {0x1f49},
-        {0x1f4a},
-        {0x1f4b},
-        {0x1f4c},
-        {0x1f4d},
-        {0x1f59},
-        {0x1f5b},
-        {0x1f5d},
-        {0x1f5f},
-        {0x1f68},
-        {0x1f69},
-        {0x1f6a},
-        {0x1f6b},
-        {0x1f6c},
-        {0x1f6d},
-        {0x1f6e},
-        {0x1f6f},
-        {0x1fba},
-        {0x1fbb},
-        {0x1fc8},
-        {0x1fc9},
-        {0x1fca},
-        {0x1fcb},
-        {0x1fda},
-        {0x1fdb},
-        {0x1ff8},
-        {0x1ff9},
-        {0x1fea},
-        {0x1feb},
-        {0x1ffa},
-        {0x1ffb},
-        {0x1fb8},
-        {0x1fb9},
-        {0x1fd8},
-        {0x1fd9},
-        {0x1fe8},
-        {0x1fe9},
-        {0x1fec},
-        {0x2160},
-        {0x2161},
-        {0x2162},
-        {0x2163},
-        {0x2164},
-        {0x2165},
-        {0x2166},
-        {0x2167},
-        {0x2168},
-        {0x2169},
-        {0x216a},
-        {0x216b},
-        {0x216c},
-        {0x216d},
-        {0x216e},
-        {0x216f},
-        {0x24b6},
-        {0x24b7},
-        {0x24b8},
-        {0x24b9},
-        {0x24ba},
-        {0x24bb},
-        {0x24bc},
-        {0x24bd},
-        {0x24be},
-        {0x24bf},
-        {0x24c0},
-        {0x24c1},
-        {0x24c2},
-        {0x24c3},
-        {0x24c4},
-        {0x24c5},
-        {0x24c6},
-        {0x24c7},
-        {0x24c8},
-        {0x24c9},
-        {0x24ca},
-        {0x24cb},
-        {0x24cc},
-        {0x24cd},
-        {0x24ce},
-        {0x24cf},
-        {0x2c00},
-        {0x2c01},
-        {0x2c02},
-        {0x2c03},
-        {0x2c04},
-        {0x2c05},
-        {0x2c06},
-        {0x2c07},
-        {0x2c08},
-        {0x2c09},
-        {0x2c0a},
-        {0x2c0b},
-        {0x2c0c},
-        {0x2c0d},
-        {0x2c0e},
-        {0x2c0f},
-        {0x2c10},
-        {0x2c11},
-        {0x2c12},
-        {0x2c13},
-        {0x2c14},
-        {0x2c15},
-        {0x2c16},
-        {0x2c17},
-        {0x2c18},
-        {0x2c19},
-        {0x2c1a},
-        {0x2c1b},
-        {0x2c1c},
-        {0x2c1d},
-        {0x2c1e},
-        {0x2c1f},
-        {0x2c20},
-        {0x2c21},
-        {0x2c22},
-        {0x2c23},
-        {0x2c24},
-        {0x2c25},
-        {0x2c26},
-        {0x2c27},
-        {0x2c28},
-        {0x2c29},
-        {0x2c2a},
-        {0x2c2b},
-        {0x2c2c},
-        {0x2c2d},
-        {0x2c2e},
-        {0x2c80},
-        {0x2c82},
-        {0x2c84},
-        {0x2c86},
-        {0x2c88},
-        {0x2c8a},
-        {0x2c8c},
-        {0x2c8e},
-        {0x2c90},
-        {0x2c92},
-        {0x2c94},
-        {0x2c96},
-        {0x2c98},
-        {0x2c9a},
-        {0x2c9c},
-        {0x2c9e},
-        {0x2ca0},
-        {0x2ca2},
-        {0x2ca4},
-        {0x2ca6},
-        {0x2ca8},
-        {0x2caa},
-        {0x2cac},
-        {0x2cae},
-        {0x2cb0},
-        {0x2cb2},
-        {0x2cb4},
-        {0x2cb6},
-        {0x2cb8},
-        {0x2cba},
-        {0x2cbc},
-        {0x2cbe},
-        {0x2cc0},
-        {0x2cc2},
-        {0x2cc4},
-        {0x2cc6},
-        {0x2cc8},
-        {0x2cca},
-        {0x2ccc},
-        {0x2cce},
-        {0x2cd0},
-        {0x2cd2},
-        {0x2cd4},
-        {0x2cd6},
-        {0x2cd8},
-        {0x2cda},
-        {0x2cdc},
-        {0x2cde},
-        {0x2ce0},
-        {0x2ce2},
-        {0x10a0},
-        {0x10a1},
-        {0x10a2},
-        {0x10a3},
-        {0x10a4},
-        {0x10a5},
-        {0x10a6},
-        {0x10a7},
-        {0x10a8},
-        {0x10a9},
-        {0x10aa},
-        {0x10ab},
-        {0x10ac},
-        {0x10ad},
-        {0x10ae},
-        {0x10af},
-        {0x10b0},
-        {0x10b1},
-        {0x10b2},
-        {0x10b3},
-        {0x10b4},
-        {0x10b5},
-        {0x10b6},
-        {0x10b7},
-        {0x10b8},
-        {0x10b9},
-        {0x10ba},
-        {0x10bb},
-        {0x10bc},
-        {0x10bd},
-        {0x10be},
-        {0x10bf},
-        {0x10c0},
-        {0x10c1},
-        {0x10c2},
-        {0x10c3},
-        {0x10c4},
-        {0x10c5},
-        {0xff21},
-        {0xff22},
-        {0xff23},
-        {0xff24},
-        {0xff25},
-        {0xff26},
-        {0xff27},
-        {0xff28},
-        {0xff29},
-        {0xff2a},
-        {0xff2b},
-        {0xff2c},
-        {0xff2d},
-        {0xff2e},
-        {0xff2f},
-        {0xff30},
-        {0xff31},
-        {0xff32},
-        {0xff33},
-        {0xff34},
-        {0xff35},
-        {0xff36},
-        {0xff37},
-        {0xff38},
-        {0xff39},
-        {0xff3a},
-        {0x10400},
-        {0x10401},
-        {0x10402},
-        {0x10403},
-        {0x10404},
-        {0x10405},
-        {0x10406},
-        {0x10407},
-        {0x10408},
-        {0x10409},
-        {0x1040a},
-        {0x1040b},
-        {0x1040c},
-        {0x1040d},
-        {0x1040e},
-        {0x1040f},
-        {0x10410},
-        {0x10411},
-        {0x10412},
-        {0x10413},
-        {0x10414},
-        {0x10415},
-        {0x10416},
-        {0x10417},
-        {0x10418},
-        {0x10419},
-        {0x1041a},
-        {0x1041b},
-        {0x1041c},
-        {0x1041d},
-        {0x1041e},
-        {0x1041f},
-        {0x10420},
-        {0x10421},
-        {0x10422},
-        {0x10423},
-        {0x10424},
-        {0x10425},
-        {0x10426},
-        {0x10427}
-    };
-
-    static final int CaseUnfold_11_Locale_From[] = new int[] {
-        0x0069
-    };
-
-    static final int CaseUnfold_11_Locale_To[][]= new int[][] {
-        {0x0049}
-    };
-    
-    static final int CaseUnfold_12[][] = new int[][] {
-        {0x0061, 0x02be}, {0x1e9a},
-        {0x0066, 0x0066}, {0xfb00},
-        {0x0066, 0x0069}, {0xfb01},
-        {0x0066, 0x006c}, {0xfb02},
-        {0x0068, 0x0331}, {0x1e96},
-        {0x006a, 0x030c}, {0x01f0},
-        {0x0073, 0x0073}, {0x00df},
-        {0x0073, 0x0074}, {0xfb05, 0xfb06},
-        {0x0074, 0x0308}, {0x1e97},
-        {0x0077, 0x030a}, {0x1e98},
-        {0x0079, 0x030a}, {0x1e99},
-        {0x02bc, 0x006e}, {0x0149},
-        {0x03ac, 0x03b9}, {0x1fb4},
-        {0x03ae, 0x03b9}, {0x1fc4},
-        {0x03b1, 0x0342}, {0x1fb6},
-        {0x03b1, 0x03b9}, {0x1fb3, 0x1fbc},
-        {0x03b7, 0x0342}, {0x1fc6},
-        {0x03b7, 0x03b9}, {0x1fc3, 0x1fcc},
-        {0x03b9, 0x0342}, {0x1fd6},
-        {0x03c1, 0x0313}, {0x1fe4},
-        {0x03c5, 0x0313}, {0x1f50},
-        {0x03c5, 0x0342}, {0x1fe6},
-        {0x03c9, 0x0342}, {0x1ff6},
-        {0x03c9, 0x03b9}, {0x1ff3, 0x1ffc},
-        {0x03ce, 0x03b9}, {0x1ff4},
-        {0x0565, 0x0582}, {0x0587},
-        {0x0574, 0x0565}, {0xfb14},
-        {0x0574, 0x056b}, {0xfb15},
-        {0x0574, 0x056d}, {0xfb17},
-        {0x0574, 0x0576}, {0xfb13},
-        {0x057e, 0x0576}, {0xfb16},
-        {0x1f00, 0x03b9}, {0x1f88, 0x1f80},
-        {0x1f01, 0x03b9}, {0x1f81, 0x1f89},
-        {0x1f02, 0x03b9}, {0x1f82, 0x1f8a},
-        {0x1f03, 0x03b9}, {0x1f83, 0x1f8b},
-        {0x1f04, 0x03b9}, {0x1f84, 0x1f8c},
-        {0x1f05, 0x03b9}, {0x1f85, 0x1f8d},
-        {0x1f06, 0x03b9}, {0x1f86, 0x1f8e},
-        {0x1f07, 0x03b9}, {0x1f87, 0x1f8f},
-        {0x1f20, 0x03b9}, {0x1f90, 0x1f98},
-        {0x1f21, 0x03b9}, {0x1f91, 0x1f99},
-        {0x1f22, 0x03b9}, {0x1f92, 0x1f9a},
-        {0x1f23, 0x03b9}, {0x1f93, 0x1f9b},
-        {0x1f24, 0x03b9}, {0x1f94, 0x1f9c},
-        {0x1f25, 0x03b9}, {0x1f95, 0x1f9d},
-        {0x1f26, 0x03b9}, {0x1f96, 0x1f9e},
-        {0x1f27, 0x03b9}, {0x1f97, 0x1f9f},
-        {0x1f60, 0x03b9}, {0x1fa0, 0x1fa8},
-        {0x1f61, 0x03b9}, {0x1fa1, 0x1fa9},
-        {0x1f62, 0x03b9}, {0x1fa2, 0x1faa},
-        {0x1f63, 0x03b9}, {0x1fa3, 0x1fab},
-        {0x1f64, 0x03b9}, {0x1fa4, 0x1fac},
-        {0x1f65, 0x03b9}, {0x1fa5, 0x1fad},
-        {0x1f66, 0x03b9}, {0x1fa6, 0x1fae},
-        {0x1f67, 0x03b9}, {0x1fa7, 0x1faf},
-        {0x1f70, 0x03b9}, {0x1fb2},
-        {0x1f74, 0x03b9}, {0x1fc2},
-        {0x1f7c, 0x03b9}, {0x1ff2}
-    };
-    
-    static final int CaseUnfold_12_Locale[][] = new int[][] {
-        {0x0069, 0x0307}, {0x0130}
-    };
-    
-    static final int CaseUnfold_13[][] = new int[][] {
-        {0x0066, 0x0066, 0x0069}, {0xfb03},
-        {0x0066, 0x0066, 0x006c}, {0xfb04},
-        {0x03b1, 0x0342, 0x03b9}, {0x1fb7},
-        {0x03b7, 0x0342, 0x03b9}, {0x1fc7},
-        {0x03b9, 0x0308, 0x0300}, {0x1fd2},
-        {0x03b9, 0x0308, 0x0301}, {0x0390, 0x1fd3},
-        {0x03b9, 0x0308, 0x0342}, {0x1fd7},
-        {0x03c5, 0x0308, 0x0300}, {0x1fe2},
-        {0x03c5, 0x0308, 0x0301}, {0x03b0, 0x1fe3},
-        {0x03c5, 0x0308, 0x0342}, {0x1fe7},
-        {0x03c5, 0x0313, 0x0300}, {0x1f52},
-        {0x03c5, 0x0313, 0x0301}, {0x1f54},
-        {0x03c5, 0x0313, 0x0342}, {0x1f56},
-        {0x03c9, 0x0342, 0x03b9}, {0x1ff7}
-    };
-
-    private static IntHash<int[]> initializeFoldHash() {
-        IntHash<int[]> fold = new IntHash<int[]>(1200);
-        for (int i=0; i<CaseFold1_From.length; i++)
-            fold.putDirect(CaseFold1_From[i], CaseFold1_To[i]);
-        for (int i=0; i<CaseFold_Locale_From.length; i++) 
-            fold.putDirect(CaseFold_Locale_From[i], CaseFold_Locale_To[i]);
-        return fold;
-    }
-
-    private static IntHash<int[]> initializeUnfold1Hash() {
-        IntHash<int[]> unfold1 = new IntHash<int[]>(1000);
-        for (int i=0; i<CaseUnfold_11_From.length; i++) 
-            unfold1.putDirect(CaseUnfold_11_From[i], CaseUnfold_11_To[i]);
-        for (int i=0; i<CaseUnfold_11_Locale_From.length; i++) 
-            unfold1.putDirect(CaseUnfold_11_Locale_From[i], CaseUnfold_11_Locale_To[i]);
-        return unfold1;
-    }
-
-    private static IntArrayHash<int[]> initializeUnfold2Hash() {
-        IntArrayHash<int[]> unfold2 = new IntArrayHash<int[]>(200);
-        for (int i=0; i<CaseUnfold_12.length; i+=2)
-            unfold2.putDirect(CaseUnfold_12[i], CaseUnfold_12[i + 1]);
-        for (int i=0; i<CaseUnfold_12_Locale.length; i+=2)
-            unfold2.putDirect(CaseUnfold_12_Locale[i], CaseUnfold_12_Locale[i + 1]);
-        return unfold2;
-    }
-
-    private static IntArrayHash<int[]> initializeUnfold3Hash() {
-        IntArrayHash<int[]> unfold3 = new IntArrayHash<int[]>(30);
-        for (int i=0; i<CaseUnfold_13.length; i+=2)
-            unfold3.putDirect(CaseUnfold_13[i], CaseUnfold_13[i + 1]);
-        return unfold3;
-    }
-
-    static final IntHash<int[]> FoldHash = initializeFoldHash();
-    static final IntHash<int[]> Unfold1Hash = initializeUnfold1Hash();
-    static final IntArrayHash<int[]> Unfold2Hash = initializeUnfold2Hash();
-    static final IntArrayHash<int[]> Unfold3Hash = initializeUnfold3Hash();    
-}
diff --git a/src/org/joni/encoding/unicode/UnicodeCodeRanges.java b/src/org/joni/encoding/unicode/UnicodeCodeRanges.java
deleted file mode 100644
index edf886c..0000000
--- a/src/org/joni/encoding/unicode/UnicodeCodeRanges.java
+++ /dev/null
@@ -1,3522 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.unicode;
-
-import org.joni.Config;
-
-public class UnicodeCodeRanges {
-
-    /* 'NEWLINE' */
-    private static final int CR_NEWLINE[] = {
-      1,
-      0x000a, 0x000a
-    }; /* CR_NEWLINE */
-    
-    /* 'Alpha': [[:Alpha:]] */
-    private static final int CR_Alpha[] = {
-      418,
-      0x0041, 0x005a,
-      0x0061, 0x007a,
-      0x00aa, 0x00aa,
-      0x00b5, 0x00b5,
-      0x00ba, 0x00ba,
-      0x00c0, 0x00d6,
-      0x00d8, 0x00f6,
-      0x00f8, 0x0241,
-      0x0250, 0x02c1,
-      0x02c6, 0x02d1,
-      0x02e0, 0x02e4,
-      0x02ee, 0x02ee,
-      0x0300, 0x036f,
-      0x037a, 0x037a,
-      0x0386, 0x0386,
-      0x0388, 0x038a,
-      0x038c, 0x038c,
-      0x038e, 0x03a1,
-      0x03a3, 0x03ce,
-      0x03d0, 0x03f5,
-      0x03f7, 0x0481,
-      0x0483, 0x0486,
-      0x0488, 0x04ce,
-      0x04d0, 0x04f9,
-      0x0500, 0x050f,
-      0x0531, 0x0556,
-      0x0559, 0x0559,
-      0x0561, 0x0587,
-      0x0591, 0x05b9,
-      0x05bb, 0x05bd,
-      0x05bf, 0x05bf,
-      0x05c1, 0x05c2,
-      0x05c4, 0x05c5,
-      0x05c7, 0x05c7,
-      0x05d0, 0x05ea,
-      0x05f0, 0x05f2,
-      0x0610, 0x0615,
-      0x0621, 0x063a,
-      0x0640, 0x065e,
-      0x066e, 0x06d3,
-      0x06d5, 0x06dc,
-      0x06de, 0x06e8,
-      0x06ea, 0x06ef,
-      0x06fa, 0x06fc,
-      0x06ff, 0x06ff,
-      0x0710, 0x074a,
-      0x074d, 0x076d,
-      0x0780, 0x07b1,
-      0x0901, 0x0939,
-      0x093c, 0x094d,
-      0x0950, 0x0954,
-      0x0958, 0x0963,
-      0x097d, 0x097d,
-      0x0981, 0x0983,
-      0x0985, 0x098c,
-      0x098f, 0x0990,
-      0x0993, 0x09a8,
-      0x09aa, 0x09b0,
-      0x09b2, 0x09b2,
-      0x09b6, 0x09b9,
-      0x09bc, 0x09c4,
-      0x09c7, 0x09c8,
-      0x09cb, 0x09ce,
-      0x09d7, 0x09d7,
-      0x09dc, 0x09dd,
-      0x09df, 0x09e3,
-      0x09f0, 0x09f1,
-      0x0a01, 0x0a03,
-      0x0a05, 0x0a0a,
-      0x0a0f, 0x0a10,
-      0x0a13, 0x0a28,
-      0x0a2a, 0x0a30,
-      0x0a32, 0x0a33,
-      0x0a35, 0x0a36,
-      0x0a38, 0x0a39,
-      0x0a3c, 0x0a3c,
-      0x0a3e, 0x0a42,
-      0x0a47, 0x0a48,
-      0x0a4b, 0x0a4d,
-      0x0a59, 0x0a5c,
-      0x0a5e, 0x0a5e,
-      0x0a70, 0x0a74,
-      0x0a81, 0x0a83,
-      0x0a85, 0x0a8d,
-      0x0a8f, 0x0a91,
-      0x0a93, 0x0aa8,
-      0x0aaa, 0x0ab0,
-      0x0ab2, 0x0ab3,
-      0x0ab5, 0x0ab9,
-      0x0abc, 0x0ac5,
-      0x0ac7, 0x0ac9,
-      0x0acb, 0x0acd,
-      0x0ad0, 0x0ad0,
-      0x0ae0, 0x0ae3,
-      0x0b01, 0x0b03,
-      0x0b05, 0x0b0c,
-      0x0b0f, 0x0b10,
-      0x0b13, 0x0b28,
-      0x0b2a, 0x0b30,
-      0x0b32, 0x0b33,
-      0x0b35, 0x0b39,
-      0x0b3c, 0x0b43,
-      0x0b47, 0x0b48,
-      0x0b4b, 0x0b4d,
-      0x0b56, 0x0b57,
-      0x0b5c, 0x0b5d,
-      0x0b5f, 0x0b61,
-      0x0b71, 0x0b71,
-      0x0b82, 0x0b83,
-      0x0b85, 0x0b8a,
-      0x0b8e, 0x0b90,
-      0x0b92, 0x0b95,
-      0x0b99, 0x0b9a,
-      0x0b9c, 0x0b9c,
-      0x0b9e, 0x0b9f,
-      0x0ba3, 0x0ba4,
-      0x0ba8, 0x0baa,
-      0x0bae, 0x0bb9,
-      0x0bbe, 0x0bc2,
-      0x0bc6, 0x0bc8,
-      0x0bca, 0x0bcd,
-      0x0bd7, 0x0bd7,
-      0x0c01, 0x0c03,
-      0x0c05, 0x0c0c,
-      0x0c0e, 0x0c10,
-      0x0c12, 0x0c28,
-      0x0c2a, 0x0c33,
-      0x0c35, 0x0c39,
-      0x0c3e, 0x0c44,
-      0x0c46, 0x0c48,
-      0x0c4a, 0x0c4d,
-      0x0c55, 0x0c56,
-      0x0c60, 0x0c61,
-      0x0c82, 0x0c83,
-      0x0c85, 0x0c8c,
-      0x0c8e, 0x0c90,
-      0x0c92, 0x0ca8,
-      0x0caa, 0x0cb3,
-      0x0cb5, 0x0cb9,
-      0x0cbc, 0x0cc4,
-      0x0cc6, 0x0cc8,
-      0x0cca, 0x0ccd,
-      0x0cd5, 0x0cd6,
-      0x0cde, 0x0cde,
-      0x0ce0, 0x0ce1,
-      0x0d02, 0x0d03,
-      0x0d05, 0x0d0c,
-      0x0d0e, 0x0d10,
-      0x0d12, 0x0d28,
-      0x0d2a, 0x0d39,
-      0x0d3e, 0x0d43,
-      0x0d46, 0x0d48,
-      0x0d4a, 0x0d4d,
-      0x0d57, 0x0d57,
-      0x0d60, 0x0d61,
-      0x0d82, 0x0d83,
-      0x0d85, 0x0d96,
-      0x0d9a, 0x0db1,
-      0x0db3, 0x0dbb,
-      0x0dbd, 0x0dbd,
-      0x0dc0, 0x0dc6,
-      0x0dca, 0x0dca,
-      0x0dcf, 0x0dd4,
-      0x0dd6, 0x0dd6,
-      0x0dd8, 0x0ddf,
-      0x0df2, 0x0df3,
-      0x0e01, 0x0e3a,
-      0x0e40, 0x0e4e,
-      0x0e81, 0x0e82,
-      0x0e84, 0x0e84,
-      0x0e87, 0x0e88,
-      0x0e8a, 0x0e8a,
-      0x0e8d, 0x0e8d,
-      0x0e94, 0x0e97,
-      0x0e99, 0x0e9f,
-      0x0ea1, 0x0ea3,
-      0x0ea5, 0x0ea5,
-      0x0ea7, 0x0ea7,
-      0x0eaa, 0x0eab,
-      0x0ead, 0x0eb9,
-      0x0ebb, 0x0ebd,
-      0x0ec0, 0x0ec4,
-      0x0ec6, 0x0ec6,
-      0x0ec8, 0x0ecd,
-      0x0edc, 0x0edd,
-      0x0f00, 0x0f00,
-      0x0f18, 0x0f19,
-      0x0f35, 0x0f35,
-      0x0f37, 0x0f37,
-      0x0f39, 0x0f39,
-      0x0f3e, 0x0f47,
-      0x0f49, 0x0f6a,
-      0x0f71, 0x0f84,
-      0x0f86, 0x0f8b,
-      0x0f90, 0x0f97,
-      0x0f99, 0x0fbc,
-      0x0fc6, 0x0fc6,
-      0x1000, 0x1021,
-      0x1023, 0x1027,
-      0x1029, 0x102a,
-      0x102c, 0x1032,
-      0x1036, 0x1039,
-      0x1050, 0x1059,
-      0x10a0, 0x10c5,
-      0x10d0, 0x10fa,
-      0x10fc, 0x10fc,
-      0x1100, 0x1159,
-      0x115f, 0x11a2,
-      0x11a8, 0x11f9,
-      0x1200, 0x1248,
-      0x124a, 0x124d,
-      0x1250, 0x1256,
-      0x1258, 0x1258,
-      0x125a, 0x125d,
-      0x1260, 0x1288,
-      0x128a, 0x128d,
-      0x1290, 0x12b0,
-      0x12b2, 0x12b5,
-      0x12b8, 0x12be,
-      0x12c0, 0x12c0,
-      0x12c2, 0x12c5,
-      0x12c8, 0x12d6,
-      0x12d8, 0x1310,
-      0x1312, 0x1315,
-      0x1318, 0x135a,
-      0x135f, 0x135f,
-      0x1380, 0x138f,
-      0x13a0, 0x13f4,
-      0x1401, 0x166c,
-      0x166f, 0x1676,
-      0x1681, 0x169a,
-      0x16a0, 0x16ea,
-      0x1700, 0x170c,
-      0x170e, 0x1714,
-      0x1720, 0x1734,
-      0x1740, 0x1753,
-      0x1760, 0x176c,
-      0x176e, 0x1770,
-      0x1772, 0x1773,
-      0x1780, 0x17b3,
-      0x17b6, 0x17d3,
-      0x17d7, 0x17d7,
-      0x17dc, 0x17dd,
-      0x180b, 0x180d,
-      0x1820, 0x1877,
-      0x1880, 0x18a9,
-      0x1900, 0x191c,
-      0x1920, 0x192b,
-      0x1930, 0x193b,
-      0x1950, 0x196d,
-      0x1970, 0x1974,
-      0x1980, 0x19a9,
-      0x19b0, 0x19c9,
-      0x1a00, 0x1a1b,
-      0x1d00, 0x1dc3,
-      0x1e00, 0x1e9b,
-      0x1ea0, 0x1ef9,
-      0x1f00, 0x1f15,
-      0x1f18, 0x1f1d,
-      0x1f20, 0x1f45,
-      0x1f48, 0x1f4d,
-      0x1f50, 0x1f57,
-      0x1f59, 0x1f59,
-      0x1f5b, 0x1f5b,
-      0x1f5d, 0x1f5d,
-      0x1f5f, 0x1f7d,
-      0x1f80, 0x1fb4,
-      0x1fb6, 0x1fbc,
-      0x1fbe, 0x1fbe,
-      0x1fc2, 0x1fc4,
-      0x1fc6, 0x1fcc,
-      0x1fd0, 0x1fd3,
-      0x1fd6, 0x1fdb,
-      0x1fe0, 0x1fec,
-      0x1ff2, 0x1ff4,
-      0x1ff6, 0x1ffc,
-      0x2071, 0x2071,
-      0x207f, 0x207f,
-      0x2090, 0x2094,
-      0x20d0, 0x20eb,
-      0x2102, 0x2102,
-      0x2107, 0x2107,
-      0x210a, 0x2113,
-      0x2115, 0x2115,
-      0x2119, 0x211d,
-      0x2124, 0x2124,
-      0x2126, 0x2126,
-      0x2128, 0x2128,
-      0x212a, 0x212d,
-      0x212f, 0x2131,
-      0x2133, 0x2139,
-      0x213c, 0x213f,
-      0x2145, 0x2149,
-      0x2c00, 0x2c2e,
-      0x2c30, 0x2c5e,
-      0x2c80, 0x2ce4,
-      0x2d00, 0x2d25,
-      0x2d30, 0x2d65,
-      0x2d6f, 0x2d6f,
-      0x2d80, 0x2d96,
-      0x2da0, 0x2da6,
-      0x2da8, 0x2dae,
-      0x2db0, 0x2db6,
-      0x2db8, 0x2dbe,
-      0x2dc0, 0x2dc6,
-      0x2dc8, 0x2dce,
-      0x2dd0, 0x2dd6,
-      0x2dd8, 0x2dde,
-      0x3005, 0x3006,
-      0x302a, 0x302f,
-      0x3031, 0x3035,
-      0x303b, 0x303c,
-      0x3041, 0x3096,
-      0x3099, 0x309a,
-      0x309d, 0x309f,
-      0x30a1, 0x30fa,
-      0x30fc, 0x30ff,
-      0x3105, 0x312c,
-      0x3131, 0x318e,
-      0x31a0, 0x31b7,
-      0x31f0, 0x31ff,
-      0x3400, 0x4db5,
-      0x4e00, 0x9fbb,
-      0xa000, 0xa48c,
-      0xa800, 0xa827,
-      0xac00, 0xd7a3,
-      0xf900, 0xfa2d,
-      0xfa30, 0xfa6a,
-      0xfa70, 0xfad9,
-      0xfb00, 0xfb06,
-      0xfb13, 0xfb17,
-      0xfb1d, 0xfb28,
-      0xfb2a, 0xfb36,
-      0xfb38, 0xfb3c,
-      0xfb3e, 0xfb3e,
-      0xfb40, 0xfb41,
-      0xfb43, 0xfb44,
-      0xfb46, 0xfbb1,
-      0xfbd3, 0xfd3d,
-      0xfd50, 0xfd8f,
-      0xfd92, 0xfdc7,
-      0xfdf0, 0xfdfb,
-      0xfe00, 0xfe0f,
-      0xfe20, 0xfe23,
-      0xfe70, 0xfe74,
-      0xfe76, 0xfefc,
-      0xff21, 0xff3a,
-      0xff41, 0xff5a,
-      0xff66, 0xffbe,
-      0xffc2, 0xffc7,
-      0xffca, 0xffcf,
-      0xffd2, 0xffd7,
-      0xffda, 0xffdc,
-      0x10000, 0x1000b,
-      0x1000d, 0x10026,
-      0x10028, 0x1003a,
-      0x1003c, 0x1003d,
-      0x1003f, 0x1004d,
-      0x10050, 0x1005d,
-      0x10080, 0x100fa,
-      0x10300, 0x1031e,
-      0x10330, 0x10349,
-      0x10380, 0x1039d,
-      0x103a0, 0x103c3,
-      0x103c8, 0x103cf,
-      0x10400, 0x1049d,
-      0x10800, 0x10805,
-      0x10808, 0x10808,
-      0x1080a, 0x10835,
-      0x10837, 0x10838,
-      0x1083c, 0x1083c,
-      0x1083f, 0x1083f,
-      0x10a00, 0x10a03,
-      0x10a05, 0x10a06,
-      0x10a0c, 0x10a13,
-      0x10a15, 0x10a17,
-      0x10a19, 0x10a33,
-      0x10a38, 0x10a3a,
-      0x10a3f, 0x10a3f,
-      0x1d165, 0x1d169,
-      0x1d16d, 0x1d172,
-      0x1d17b, 0x1d182,
-      0x1d185, 0x1d18b,
-      0x1d1aa, 0x1d1ad,
-      0x1d242, 0x1d244,
-      0x1d400, 0x1d454,
-      0x1d456, 0x1d49c,
-      0x1d49e, 0x1d49f,
-      0x1d4a2, 0x1d4a2,
-      0x1d4a5, 0x1d4a6,
-      0x1d4a9, 0x1d4ac,
-      0x1d4ae, 0x1d4b9,
-      0x1d4bb, 0x1d4bb,
-      0x1d4bd, 0x1d4c3,
-      0x1d4c5, 0x1d505,
-      0x1d507, 0x1d50a,
-      0x1d50d, 0x1d514,
-      0x1d516, 0x1d51c,
-      0x1d51e, 0x1d539,
-      0x1d53b, 0x1d53e,
-      0x1d540, 0x1d544,
-      0x1d546, 0x1d546,
-      0x1d54a, 0x1d550,
-      0x1d552, 0x1d6a5,
-      0x1d6a8, 0x1d6c0,
-      0x1d6c2, 0x1d6da,
-      0x1d6dc, 0x1d6fa,
-      0x1d6fc, 0x1d714,
-      0x1d716, 0x1d734,
-      0x1d736, 0x1d74e,
-      0x1d750, 0x1d76e,
-      0x1d770, 0x1d788,
-      0x1d78a, 0x1d7a8,
-      0x1d7aa, 0x1d7c2,
-      0x1d7c4, 0x1d7c9,
-      0x20000, 0x2a6d6,
-      0x2f800, 0x2fa1d,
-      0xe0100, 0xe01ef
-    }; /* CR_Alpha */
-    
-    /* 'Blank': [[:Blank:]] */
-    private static final int CR_Blank[] = {
-      9,
-      0x0009, 0x0009,
-      0x0020, 0x0020,
-      0x00a0, 0x00a0,
-      0x1680, 0x1680,
-      0x180e, 0x180e,
-      0x2000, 0x200a,
-      0x202f, 0x202f,
-      0x205f, 0x205f,
-      0x3000, 0x3000
-    }; /* CR_Blank */
-    
-    /* 'Cntrl': [[:Cntrl:]] */
-    private static final int CR_Cntrl[] = {
-      19,
-      0x0000, 0x001f,
-      0x007f, 0x009f,
-      0x00ad, 0x00ad,
-      0x0600, 0x0603,
-      0x06dd, 0x06dd,
-      0x070f, 0x070f,
-      0x17b4, 0x17b5,
-      0x200b, 0x200f,
-      0x202a, 0x202e,
-      0x2060, 0x2063,
-      0x206a, 0x206f,
-      0xd800, 0xf8ff,
-      0xfeff, 0xfeff,
-      0xfff9, 0xfffb,
-      0x1d173, 0x1d17a,
-      0xe0001, 0xe0001,
-      0xe0020, 0xe007f,
-      0xf0000, 0xffffd,
-      0x100000, 0x10fffd
-    }; /* CR_Cntrl */
-    
-    /* 'Digit': [[:Digit:]] */
-    private static final int CR_Digit[] = {
-      23,
-      0x0030, 0x0039,
-      0x0660, 0x0669,
-      0x06f0, 0x06f9,
-      0x0966, 0x096f,
-      0x09e6, 0x09ef,
-      0x0a66, 0x0a6f,
-      0x0ae6, 0x0aef,
-      0x0b66, 0x0b6f,
-      0x0be6, 0x0bef,
-      0x0c66, 0x0c6f,
-      0x0ce6, 0x0cef,
-      0x0d66, 0x0d6f,
-      0x0e50, 0x0e59,
-      0x0ed0, 0x0ed9,
-      0x0f20, 0x0f29,
-      0x1040, 0x1049,
-      0x17e0, 0x17e9,
-      0x1810, 0x1819,
-      0x1946, 0x194f,
-      0x19d0, 0x19d9,
-      0xff10, 0xff19,
-      0x104a0, 0x104a9,
-      0x1d7ce, 0x1d7ff
-    }; /* CR_Digit */
-
-    /* 'Graph': [[:Graph:]] */
-    private static final int CR_Graph[] = {
-      424,
-      0x0021, 0x007e,
-      0x00a1, 0x0241,
-      0x0250, 0x036f,
-      0x0374, 0x0375,
-      0x037a, 0x037a,
-      0x037e, 0x037e,
-      0x0384, 0x038a,
-      0x038c, 0x038c,
-      0x038e, 0x03a1,
-      0x03a3, 0x03ce,
-      0x03d0, 0x0486,
-      0x0488, 0x04ce,
-      0x04d0, 0x04f9,
-      0x0500, 0x050f,
-      0x0531, 0x0556,
-      0x0559, 0x055f,
-      0x0561, 0x0587,
-      0x0589, 0x058a,
-      0x0591, 0x05b9,
-      0x05bb, 0x05c7,
-      0x05d0, 0x05ea,
-      0x05f0, 0x05f4,
-      0x0600, 0x0603,
-      0x060b, 0x0615,
-      0x061b, 0x061b,
-      0x061e, 0x061f,
-      0x0621, 0x063a,
-      0x0640, 0x065e,
-      0x0660, 0x070d,
-      0x070f, 0x074a,
-      0x074d, 0x076d,
-      0x0780, 0x07b1,
-      0x0901, 0x0939,
-      0x093c, 0x094d,
-      0x0950, 0x0954,
-      0x0958, 0x0970,
-      0x097d, 0x097d,
-      0x0981, 0x0983,
-      0x0985, 0x098c,
-      0x098f, 0x0990,
-      0x0993, 0x09a8,
-      0x09aa, 0x09b0,
-      0x09b2, 0x09b2,
-      0x09b6, 0x09b9,
-      0x09bc, 0x09c4,
-      0x09c7, 0x09c8,
-      0x09cb, 0x09ce,
-      0x09d7, 0x09d7,
-      0x09dc, 0x09dd,
-      0x09df, 0x09e3,
-      0x09e6, 0x09fa,
-      0x0a01, 0x0a03,
-      0x0a05, 0x0a0a,
-      0x0a0f, 0x0a10,
-      0x0a13, 0x0a28,
-      0x0a2a, 0x0a30,
-      0x0a32, 0x0a33,
-      0x0a35, 0x0a36,
-      0x0a38, 0x0a39,
-      0x0a3c, 0x0a3c,
-      0x0a3e, 0x0a42,
-      0x0a47, 0x0a48,
-      0x0a4b, 0x0a4d,
-      0x0a59, 0x0a5c,
-      0x0a5e, 0x0a5e,
-      0x0a66, 0x0a74,
-      0x0a81, 0x0a83,
-      0x0a85, 0x0a8d,
-      0x0a8f, 0x0a91,
-      0x0a93, 0x0aa8,
-      0x0aaa, 0x0ab0,
-      0x0ab2, 0x0ab3,
-      0x0ab5, 0x0ab9,
-      0x0abc, 0x0ac5,
-      0x0ac7, 0x0ac9,
-      0x0acb, 0x0acd,
-      0x0ad0, 0x0ad0,
-      0x0ae0, 0x0ae3,
-      0x0ae6, 0x0aef,
-      0x0af1, 0x0af1,
-      0x0b01, 0x0b03,
-      0x0b05, 0x0b0c,
-      0x0b0f, 0x0b10,
-      0x0b13, 0x0b28,
-      0x0b2a, 0x0b30,
-      0x0b32, 0x0b33,
-      0x0b35, 0x0b39,
-      0x0b3c, 0x0b43,
-      0x0b47, 0x0b48,
-      0x0b4b, 0x0b4d,
-      0x0b56, 0x0b57,
-      0x0b5c, 0x0b5d,
-      0x0b5f, 0x0b61,
-      0x0b66, 0x0b71,
-      0x0b82, 0x0b83,
-      0x0b85, 0x0b8a,
-      0x0b8e, 0x0b90,
-      0x0b92, 0x0b95,
-      0x0b99, 0x0b9a,
-      0x0b9c, 0x0b9c,
-      0x0b9e, 0x0b9f,
-      0x0ba3, 0x0ba4,
-      0x0ba8, 0x0baa,
-      0x0bae, 0x0bb9,
-      0x0bbe, 0x0bc2,
-      0x0bc6, 0x0bc8,
-      0x0bca, 0x0bcd,
-      0x0bd7, 0x0bd7,
-      0x0be6, 0x0bfa,
-      0x0c01, 0x0c03,
-      0x0c05, 0x0c0c,
-      0x0c0e, 0x0c10,
-      0x0c12, 0x0c28,
-      0x0c2a, 0x0c33,
-      0x0c35, 0x0c39,
-      0x0c3e, 0x0c44,
-      0x0c46, 0x0c48,
-      0x0c4a, 0x0c4d,
-      0x0c55, 0x0c56,
-      0x0c60, 0x0c61,
-      0x0c66, 0x0c6f,
-      0x0c82, 0x0c83,
-      0x0c85, 0x0c8c,
-      0x0c8e, 0x0c90,
-      0x0c92, 0x0ca8,
-      0x0caa, 0x0cb3,
-      0x0cb5, 0x0cb9,
-      0x0cbc, 0x0cc4,
-      0x0cc6, 0x0cc8,
-      0x0cca, 0x0ccd,
-      0x0cd5, 0x0cd6,
-      0x0cde, 0x0cde,
-      0x0ce0, 0x0ce1,
-      0x0ce6, 0x0cef,
-      0x0d02, 0x0d03,
-      0x0d05, 0x0d0c,
-      0x0d0e, 0x0d10,
-      0x0d12, 0x0d28,
-      0x0d2a, 0x0d39,
-      0x0d3e, 0x0d43,
-      0x0d46, 0x0d48,
-      0x0d4a, 0x0d4d,
-      0x0d57, 0x0d57,
-      0x0d60, 0x0d61,
-      0x0d66, 0x0d6f,
-      0x0d82, 0x0d83,
-      0x0d85, 0x0d96,
-      0x0d9a, 0x0db1,
-      0x0db3, 0x0dbb,
-      0x0dbd, 0x0dbd,
-      0x0dc0, 0x0dc6,
-      0x0dca, 0x0dca,
-      0x0dcf, 0x0dd4,
-      0x0dd6, 0x0dd6,
-      0x0dd8, 0x0ddf,
-      0x0df2, 0x0df4,
-      0x0e01, 0x0e3a,
-      0x0e3f, 0x0e5b,
-      0x0e81, 0x0e82,
-      0x0e84, 0x0e84,
-      0x0e87, 0x0e88,
-      0x0e8a, 0x0e8a,
-      0x0e8d, 0x0e8d,
-      0x0e94, 0x0e97,
-      0x0e99, 0x0e9f,
-      0x0ea1, 0x0ea3,
-      0x0ea5, 0x0ea5,
-      0x0ea7, 0x0ea7,
-      0x0eaa, 0x0eab,
-      0x0ead, 0x0eb9,
-      0x0ebb, 0x0ebd,
-      0x0ec0, 0x0ec4,
-      0x0ec6, 0x0ec6,
-      0x0ec8, 0x0ecd,
-      0x0ed0, 0x0ed9,
-      0x0edc, 0x0edd,
-      0x0f00, 0x0f47,
-      0x0f49, 0x0f6a,
-      0x0f71, 0x0f8b,
-      0x0f90, 0x0f97,
-      0x0f99, 0x0fbc,
-      0x0fbe, 0x0fcc,
-      0x0fcf, 0x0fd1,
-      0x1000, 0x1021,
-      0x1023, 0x1027,
-      0x1029, 0x102a,
-      0x102c, 0x1032,
-      0x1036, 0x1039,
-      0x1040, 0x1059,
-      0x10a0, 0x10c5,
-      0x10d0, 0x10fc,
-      0x1100, 0x1159,
-      0x115f, 0x11a2,
-      0x11a8, 0x11f9,
-      0x1200, 0x1248,
-      0x124a, 0x124d,
-      0x1250, 0x1256,
-      0x1258, 0x1258,
-      0x125a, 0x125d,
-      0x1260, 0x1288,
-      0x128a, 0x128d,
-      0x1290, 0x12b0,
-      0x12b2, 0x12b5,
-      0x12b8, 0x12be,
-      0x12c0, 0x12c0,
-      0x12c2, 0x12c5,
-      0x12c8, 0x12d6,
-      0x12d8, 0x1310,
-      0x1312, 0x1315,
-      0x1318, 0x135a,
-      0x135f, 0x137c,
-      0x1380, 0x1399,
-      0x13a0, 0x13f4,
-      0x1401, 0x1676,
-      0x1681, 0x169c,
-      0x16a0, 0x16f0,
-      0x1700, 0x170c,
-      0x170e, 0x1714,
-      0x1720, 0x1736,
-      0x1740, 0x1753,
-      0x1760, 0x176c,
-      0x176e, 0x1770,
-      0x1772, 0x1773,
-      0x1780, 0x17dd,
-      0x17e0, 0x17e9,
-      0x17f0, 0x17f9,
-      0x1800, 0x180d,
-      0x1810, 0x1819,
-      0x1820, 0x1877,
-      0x1880, 0x18a9,
-      0x1900, 0x191c,
-      0x1920, 0x192b,
-      0x1930, 0x193b,
-      0x1940, 0x1940,
-      0x1944, 0x196d,
-      0x1970, 0x1974,
-      0x1980, 0x19a9,
-      0x19b0, 0x19c9,
-      0x19d0, 0x19d9,
-      0x19de, 0x1a1b,
-      0x1a1e, 0x1a1f,
-      0x1d00, 0x1dc3,
-      0x1e00, 0x1e9b,
-      0x1ea0, 0x1ef9,
-      0x1f00, 0x1f15,
-      0x1f18, 0x1f1d,
-      0x1f20, 0x1f45,
-      0x1f48, 0x1f4d,
-      0x1f50, 0x1f57,
-      0x1f59, 0x1f59,
-      0x1f5b, 0x1f5b,
-      0x1f5d, 0x1f5d,
-      0x1f5f, 0x1f7d,
-      0x1f80, 0x1fb4,
-      0x1fb6, 0x1fc4,
-      0x1fc6, 0x1fd3,
-      0x1fd6, 0x1fdb,
-      0x1fdd, 0x1fef,
-      0x1ff2, 0x1ff4,
-      0x1ff6, 0x1ffe,
-      0x200b, 0x2027,
-      0x202a, 0x202e,
-      0x2030, 0x205e,
-      0x2060, 0x2063,
-      0x206a, 0x2071,
-      0x2074, 0x208e,
-      0x2090, 0x2094,
-      0x20a0, 0x20b5,
-      0x20d0, 0x20eb,
-      0x2100, 0x214c,
-      0x2153, 0x2183,
-      0x2190, 0x23db,
-      0x2400, 0x2426,
-      0x2440, 0x244a,
-      0x2460, 0x269c,
-      0x26a0, 0x26b1,
-      0x2701, 0x2704,
-      0x2706, 0x2709,
-      0x270c, 0x2727,
-      0x2729, 0x274b,
-      0x274d, 0x274d,
-      0x274f, 0x2752,
-      0x2756, 0x2756,
-      0x2758, 0x275e,
-      0x2761, 0x2794,
-      0x2798, 0x27af,
-      0x27b1, 0x27be,
-      0x27c0, 0x27c6,
-      0x27d0, 0x27eb,
-      0x27f0, 0x2b13,
-      0x2c00, 0x2c2e,
-      0x2c30, 0x2c5e,
-      0x2c80, 0x2cea,
-      0x2cf9, 0x2d25,
-      0x2d30, 0x2d65,
-      0x2d6f, 0x2d6f,
-      0x2d80, 0x2d96,
-      0x2da0, 0x2da6,
-      0x2da8, 0x2dae,
-      0x2db0, 0x2db6,
-      0x2db8, 0x2dbe,
-      0x2dc0, 0x2dc6,
-      0x2dc8, 0x2dce,
-      0x2dd0, 0x2dd6,
-      0x2dd8, 0x2dde,
-      0x2e00, 0x2e17,
-      0x2e1c, 0x2e1d,
-      0x2e80, 0x2e99,
-      0x2e9b, 0x2ef3,
-      0x2f00, 0x2fd5,
-      0x2ff0, 0x2ffb,
-      0x3001, 0x303f,
-      0x3041, 0x3096,
-      0x3099, 0x30ff,
-      0x3105, 0x312c,
-      0x3131, 0x318e,
-      0x3190, 0x31b7,
-      0x31c0, 0x31cf,
-      0x31f0, 0x321e,
-      0x3220, 0x3243,
-      0x3250, 0x32fe,
-      0x3300, 0x4db5,
-      0x4dc0, 0x9fbb,
-      0xa000, 0xa48c,
-      0xa490, 0xa4c6,
-      0xa700, 0xa716,
-      0xa800, 0xa82b,
-      0xac00, 0xd7a3,
-      0xe000, 0xfa2d,
-      0xfa30, 0xfa6a,
-      0xfa70, 0xfad9,
-      0xfb00, 0xfb06,
-      0xfb13, 0xfb17,
-      0xfb1d, 0xfb36,
-      0xfb38, 0xfb3c,
-      0xfb3e, 0xfb3e,
-      0xfb40, 0xfb41,
-      0xfb43, 0xfb44,
-      0xfb46, 0xfbb1,
-      0xfbd3, 0xfd3f,
-      0xfd50, 0xfd8f,
-      0xfd92, 0xfdc7,
-      0xfdf0, 0xfdfd,
-      0xfe00, 0xfe19,
-      0xfe20, 0xfe23,
-      0xfe30, 0xfe52,
-      0xfe54, 0xfe66,
-      0xfe68, 0xfe6b,
-      0xfe70, 0xfe74,
-      0xfe76, 0xfefc,
-      0xfeff, 0xfeff,
-      0xff01, 0xffbe,
-      0xffc2, 0xffc7,
-      0xffca, 0xffcf,
-      0xffd2, 0xffd7,
-      0xffda, 0xffdc,
-      0xffe0, 0xffe6,
-      0xffe8, 0xffee,
-      0xfff9, 0xfffd,
-      0x10000, 0x1000b,
-      0x1000d, 0x10026,
-      0x10028, 0x1003a,
-      0x1003c, 0x1003d,
-      0x1003f, 0x1004d,
-      0x10050, 0x1005d,
-      0x10080, 0x100fa,
-      0x10100, 0x10102,
-      0x10107, 0x10133,
-      0x10137, 0x1018a,
-      0x10300, 0x1031e,
-      0x10320, 0x10323,
-      0x10330, 0x1034a,
-      0x10380, 0x1039d,
-      0x1039f, 0x103c3,
-      0x103c8, 0x103d5,
-      0x10400, 0x1049d,
-      0x104a0, 0x104a9,
-      0x10800, 0x10805,
-      0x10808, 0x10808,
-      0x1080a, 0x10835,
-      0x10837, 0x10838,
-      0x1083c, 0x1083c,
-      0x1083f, 0x1083f,
-      0x10a00, 0x10a03,
-      0x10a05, 0x10a06,
-      0x10a0c, 0x10a13,
-      0x10a15, 0x10a17,
-      0x10a19, 0x10a33,
-      0x10a38, 0x10a3a,
-      0x10a3f, 0x10a47,
-      0x10a50, 0x10a58,
-      0x1d000, 0x1d0f5,
-      0x1d100, 0x1d126,
-      0x1d12a, 0x1d1dd,
-      0x1d200, 0x1d245,
-      0x1d300, 0x1d356,
-      0x1d400, 0x1d454,
-      0x1d456, 0x1d49c,
-      0x1d49e, 0x1d49f,
-      0x1d4a2, 0x1d4a2,
-      0x1d4a5, 0x1d4a6,
-      0x1d4a9, 0x1d4ac,
-      0x1d4ae, 0x1d4b9,
-      0x1d4bb, 0x1d4bb,
-      0x1d4bd, 0x1d4c3,
-      0x1d4c5, 0x1d505,
-      0x1d507, 0x1d50a,
-      0x1d50d, 0x1d514,
-      0x1d516, 0x1d51c,
-      0x1d51e, 0x1d539,
-      0x1d53b, 0x1d53e,
-      0x1d540, 0x1d544,
-      0x1d546, 0x1d546,
-      0x1d54a, 0x1d550,
-      0x1d552, 0x1d6a5,
-      0x1d6a8, 0x1d7c9,
-      0x1d7ce, 0x1d7ff,
-      0x20000, 0x2a6d6,
-      0x2f800, 0x2fa1d,
-      0xe0001, 0xe0001,
-      0xe0020, 0xe007f,
-      0xe0100, 0xe01ef,
-      0xf0000, 0xffffd,
-      0x100000, 0x10fffd
-    }; /* CR_Graph */
-    
-    /* 'Lower': [[:Lower:]] */
-    private static final int CR_Lower[] = {
-      480,
-      0x0061, 0x007a,
-      0x00aa, 0x00aa,
-      0x00b5, 0x00b5,
-      0x00ba, 0x00ba,
-      0x00df, 0x00f6,
-      0x00f8, 0x00ff,
-      0x0101, 0x0101,
-      0x0103, 0x0103,
-      0x0105, 0x0105,
-      0x0107, 0x0107,
-      0x0109, 0x0109,
-      0x010b, 0x010b,
-      0x010d, 0x010d,
-      0x010f, 0x010f,
-      0x0111, 0x0111,
-      0x0113, 0x0113,
-      0x0115, 0x0115,
-      0x0117, 0x0117,
-      0x0119, 0x0119,
-      0x011b, 0x011b,
-      0x011d, 0x011d,
-      0x011f, 0x011f,
-      0x0121, 0x0121,
-      0x0123, 0x0123,
-      0x0125, 0x0125,
-      0x0127, 0x0127,
-      0x0129, 0x0129,
-      0x012b, 0x012b,
-      0x012d, 0x012d,
-      0x012f, 0x012f,
-      0x0131, 0x0131,
-      0x0133, 0x0133,
-      0x0135, 0x0135,
-      0x0137, 0x0138,
-      0x013a, 0x013a,
-      0x013c, 0x013c,
-      0x013e, 0x013e,
-      0x0140, 0x0140,
-      0x0142, 0x0142,
-      0x0144, 0x0144,
-      0x0146, 0x0146,
-      0x0148, 0x0149,
-      0x014b, 0x014b,
-      0x014d, 0x014d,
-      0x014f, 0x014f,
-      0x0151, 0x0151,
-      0x0153, 0x0153,
-      0x0155, 0x0155,
-      0x0157, 0x0157,
-      0x0159, 0x0159,
-      0x015b, 0x015b,
-      0x015d, 0x015d,
-      0x015f, 0x015f,
-      0x0161, 0x0161,
-      0x0163, 0x0163,
-      0x0165, 0x0165,
-      0x0167, 0x0167,
-      0x0169, 0x0169,
-      0x016b, 0x016b,
-      0x016d, 0x016d,
-      0x016f, 0x016f,
-      0x0171, 0x0171,
-      0x0173, 0x0173,
-      0x0175, 0x0175,
-      0x0177, 0x0177,
-      0x017a, 0x017a,
-      0x017c, 0x017c,
-      0x017e, 0x0180,
-      0x0183, 0x0183,
-      0x0185, 0x0185,
-      0x0188, 0x0188,
-      0x018c, 0x018d,
-      0x0192, 0x0192,
-      0x0195, 0x0195,
-      0x0199, 0x019b,
-      0x019e, 0x019e,
-      0x01a1, 0x01a1,
-      0x01a3, 0x01a3,
-      0x01a5, 0x01a5,
-      0x01a8, 0x01a8,
-      0x01aa, 0x01ab,
-      0x01ad, 0x01ad,
-      0x01b0, 0x01b0,
-      0x01b4, 0x01b4,
-      0x01b6, 0x01b6,
-      0x01b9, 0x01ba,
-      0x01bd, 0x01bf,
-      0x01c6, 0x01c6,
-      0x01c9, 0x01c9,
-      0x01cc, 0x01cc,
-      0x01ce, 0x01ce,
-      0x01d0, 0x01d0,
-      0x01d2, 0x01d2,
-      0x01d4, 0x01d4,
-      0x01d6, 0x01d6,
-      0x01d8, 0x01d8,
-      0x01da, 0x01da,
-      0x01dc, 0x01dd,
-      0x01df, 0x01df,
-      0x01e1, 0x01e1,
-      0x01e3, 0x01e3,
-      0x01e5, 0x01e5,
-      0x01e7, 0x01e7,
-      0x01e9, 0x01e9,
-      0x01eb, 0x01eb,
-      0x01ed, 0x01ed,
-      0x01ef, 0x01f0,
-      0x01f3, 0x01f3,
-      0x01f5, 0x01f5,
-      0x01f9, 0x01f9,
-      0x01fb, 0x01fb,
-      0x01fd, 0x01fd,
-      0x01ff, 0x01ff,
-      0x0201, 0x0201,
-      0x0203, 0x0203,
-      0x0205, 0x0205,
-      0x0207, 0x0207,
-      0x0209, 0x0209,
-      0x020b, 0x020b,
-      0x020d, 0x020d,
-      0x020f, 0x020f,
-      0x0211, 0x0211,
-      0x0213, 0x0213,
-      0x0215, 0x0215,
-      0x0217, 0x0217,
-      0x0219, 0x0219,
-      0x021b, 0x021b,
-      0x021d, 0x021d,
-      0x021f, 0x021f,
-      0x0221, 0x0221,
-      0x0223, 0x0223,
-      0x0225, 0x0225,
-      0x0227, 0x0227,
-      0x0229, 0x0229,
-      0x022b, 0x022b,
-      0x022d, 0x022d,
-      0x022f, 0x022f,
-      0x0231, 0x0231,
-      0x0233, 0x0239,
-      0x023c, 0x023c,
-      0x023f, 0x0240,
-      0x0250, 0x02af,
-      0x0390, 0x0390,
-      0x03ac, 0x03ce,
-      0x03d0, 0x03d1,
-      0x03d5, 0x03d7,
-      0x03d9, 0x03d9,
-      0x03db, 0x03db,
-      0x03dd, 0x03dd,
-      0x03df, 0x03df,
-      0x03e1, 0x03e1,
-      0x03e3, 0x03e3,
-      0x03e5, 0x03e5,
-      0x03e7, 0x03e7,
-      0x03e9, 0x03e9,
-      0x03eb, 0x03eb,
-      0x03ed, 0x03ed,
-      0x03ef, 0x03f3,
-      0x03f5, 0x03f5,
-      0x03f8, 0x03f8,
-      0x03fb, 0x03fc,
-      0x0430, 0x045f,
-      0x0461, 0x0461,
-      0x0463, 0x0463,
-      0x0465, 0x0465,
-      0x0467, 0x0467,
-      0x0469, 0x0469,
-      0x046b, 0x046b,
-      0x046d, 0x046d,
-      0x046f, 0x046f,
-      0x0471, 0x0471,
-      0x0473, 0x0473,
-      0x0475, 0x0475,
-      0x0477, 0x0477,
-      0x0479, 0x0479,
-      0x047b, 0x047b,
-      0x047d, 0x047d,
-      0x047f, 0x047f,
-      0x0481, 0x0481,
-      0x048b, 0x048b,
-      0x048d, 0x048d,
-      0x048f, 0x048f,
-      0x0491, 0x0491,
-      0x0493, 0x0493,
-      0x0495, 0x0495,
-      0x0497, 0x0497,
-      0x0499, 0x0499,
-      0x049b, 0x049b,
-      0x049d, 0x049d,
-      0x049f, 0x049f,
-      0x04a1, 0x04a1,
-      0x04a3, 0x04a3,
-      0x04a5, 0x04a5,
-      0x04a7, 0x04a7,
-      0x04a9, 0x04a9,
-      0x04ab, 0x04ab,
-      0x04ad, 0x04ad,
-      0x04af, 0x04af,
-      0x04b1, 0x04b1,
-      0x04b3, 0x04b3,
-      0x04b5, 0x04b5,
-      0x04b7, 0x04b7,
-      0x04b9, 0x04b9,
-      0x04bb, 0x04bb,
-      0x04bd, 0x04bd,
-      0x04bf, 0x04bf,
-      0x04c2, 0x04c2,
-      0x04c4, 0x04c4,
-      0x04c6, 0x04c6,
-      0x04c8, 0x04c8,
-      0x04ca, 0x04ca,
-      0x04cc, 0x04cc,
-      0x04ce, 0x04ce,
-      0x04d1, 0x04d1,
-      0x04d3, 0x04d3,
-      0x04d5, 0x04d5,
-      0x04d7, 0x04d7,
-      0x04d9, 0x04d9,
-      0x04db, 0x04db,
-      0x04dd, 0x04dd,
-      0x04df, 0x04df,
-      0x04e1, 0x04e1,
-      0x04e3, 0x04e3,
-      0x04e5, 0x04e5,
-      0x04e7, 0x04e7,
-      0x04e9, 0x04e9,
-      0x04eb, 0x04eb,
-      0x04ed, 0x04ed,
-      0x04ef, 0x04ef,
-      0x04f1, 0x04f1,
-      0x04f3, 0x04f3,
-      0x04f5, 0x04f5,
-      0x04f7, 0x04f7,
-      0x04f9, 0x04f9,
-      0x0501, 0x0501,
-      0x0503, 0x0503,
-      0x0505, 0x0505,
-      0x0507, 0x0507,
-      0x0509, 0x0509,
-      0x050b, 0x050b,
-      0x050d, 0x050d,
-      0x050f, 0x050f,
-      0x0561, 0x0587,
-      0x1d00, 0x1d2b,
-      0x1d62, 0x1d77,
-      0x1d79, 0x1d9a,
-      0x1e01, 0x1e01,
-      0x1e03, 0x1e03,
-      0x1e05, 0x1e05,
-      0x1e07, 0x1e07,
-      0x1e09, 0x1e09,
-      0x1e0b, 0x1e0b,
-      0x1e0d, 0x1e0d,
-      0x1e0f, 0x1e0f,
-      0x1e11, 0x1e11,
-      0x1e13, 0x1e13,
-      0x1e15, 0x1e15,
-      0x1e17, 0x1e17,
-      0x1e19, 0x1e19,
-      0x1e1b, 0x1e1b,
-      0x1e1d, 0x1e1d,
-      0x1e1f, 0x1e1f,
-      0x1e21, 0x1e21,
-      0x1e23, 0x1e23,
-      0x1e25, 0x1e25,
-      0x1e27, 0x1e27,
-      0x1e29, 0x1e29,
-      0x1e2b, 0x1e2b,
-      0x1e2d, 0x1e2d,
-      0x1e2f, 0x1e2f,
-      0x1e31, 0x1e31,
-      0x1e33, 0x1e33,
-      0x1e35, 0x1e35,
-      0x1e37, 0x1e37,
-      0x1e39, 0x1e39,
-      0x1e3b, 0x1e3b,
-      0x1e3d, 0x1e3d,
-      0x1e3f, 0x1e3f,
-      0x1e41, 0x1e41,
-      0x1e43, 0x1e43,
-      0x1e45, 0x1e45,
-      0x1e47, 0x1e47,
-      0x1e49, 0x1e49,
-      0x1e4b, 0x1e4b,
-      0x1e4d, 0x1e4d,
-      0x1e4f, 0x1e4f,
-      0x1e51, 0x1e51,
-      0x1e53, 0x1e53,
-      0x1e55, 0x1e55,
-      0x1e57, 0x1e57,
-      0x1e59, 0x1e59,
-      0x1e5b, 0x1e5b,
-      0x1e5d, 0x1e5d,
-      0x1e5f, 0x1e5f,
-      0x1e61, 0x1e61,
-      0x1e63, 0x1e63,
-      0x1e65, 0x1e65,
-      0x1e67, 0x1e67,
-      0x1e69, 0x1e69,
-      0x1e6b, 0x1e6b,
-      0x1e6d, 0x1e6d,
-      0x1e6f, 0x1e6f,
-      0x1e71, 0x1e71,
-      0x1e73, 0x1e73,
-      0x1e75, 0x1e75,
-      0x1e77, 0x1e77,
-      0x1e79, 0x1e79,
-      0x1e7b, 0x1e7b,
-      0x1e7d, 0x1e7d,
-      0x1e7f, 0x1e7f,
-      0x1e81, 0x1e81,
-      0x1e83, 0x1e83,
-      0x1e85, 0x1e85,
-      0x1e87, 0x1e87,
-      0x1e89, 0x1e89,
-      0x1e8b, 0x1e8b,
-      0x1e8d, 0x1e8d,
-      0x1e8f, 0x1e8f,
-      0x1e91, 0x1e91,
-      0x1e93, 0x1e93,
-      0x1e95, 0x1e9b,
-      0x1ea1, 0x1ea1,
-      0x1ea3, 0x1ea3,
-      0x1ea5, 0x1ea5,
-      0x1ea7, 0x1ea7,
-      0x1ea9, 0x1ea9,
-      0x1eab, 0x1eab,
-      0x1ead, 0x1ead,
-      0x1eaf, 0x1eaf,
-      0x1eb1, 0x1eb1,
-      0x1eb3, 0x1eb3,
-      0x1eb5, 0x1eb5,
-      0x1eb7, 0x1eb7,
-      0x1eb9, 0x1eb9,
-      0x1ebb, 0x1ebb,
-      0x1ebd, 0x1ebd,
-      0x1ebf, 0x1ebf,
-      0x1ec1, 0x1ec1,
-      0x1ec3, 0x1ec3,
-      0x1ec5, 0x1ec5,
-      0x1ec7, 0x1ec7,
-      0x1ec9, 0x1ec9,
-      0x1ecb, 0x1ecb,
-      0x1ecd, 0x1ecd,
-      0x1ecf, 0x1ecf,
-      0x1ed1, 0x1ed1,
-      0x1ed3, 0x1ed3,
-      0x1ed5, 0x1ed5,
-      0x1ed7, 0x1ed7,
-      0x1ed9, 0x1ed9,
-      0x1edb, 0x1edb,
-      0x1edd, 0x1edd,
-      0x1edf, 0x1edf,
-      0x1ee1, 0x1ee1,
-      0x1ee3, 0x1ee3,
-      0x1ee5, 0x1ee5,
-      0x1ee7, 0x1ee7,
-      0x1ee9, 0x1ee9,
-      0x1eeb, 0x1eeb,
-      0x1eed, 0x1eed,
-      0x1eef, 0x1eef,
-      0x1ef1, 0x1ef1,
-      0x1ef3, 0x1ef3,
-      0x1ef5, 0x1ef5,
-      0x1ef7, 0x1ef7,
-      0x1ef9, 0x1ef9,
-      0x1f00, 0x1f07,
-      0x1f10, 0x1f15,
-      0x1f20, 0x1f27,
-      0x1f30, 0x1f37,
-      0x1f40, 0x1f45,
-      0x1f50, 0x1f57,
-      0x1f60, 0x1f67,
-      0x1f70, 0x1f7d,
-      0x1f80, 0x1f87,
-      0x1f90, 0x1f97,
-      0x1fa0, 0x1fa7,
-      0x1fb0, 0x1fb4,
-      0x1fb6, 0x1fb7,
-      0x1fbe, 0x1fbe,
-      0x1fc2, 0x1fc4,
-      0x1fc6, 0x1fc7,
-      0x1fd0, 0x1fd3,
-      0x1fd6, 0x1fd7,
-      0x1fe0, 0x1fe7,
-      0x1ff2, 0x1ff4,
-      0x1ff6, 0x1ff7,
-      0x2071, 0x2071,
-      0x207f, 0x207f,
-      0x210a, 0x210a,
-      0x210e, 0x210f,
-      0x2113, 0x2113,
-      0x212f, 0x212f,
-      0x2134, 0x2134,
-      0x2139, 0x2139,
-      0x213c, 0x213d,
-      0x2146, 0x2149,
-      0x2c30, 0x2c5e,
-      0x2c81, 0x2c81,
-      0x2c83, 0x2c83,
-      0x2c85, 0x2c85,
-      0x2c87, 0x2c87,
-      0x2c89, 0x2c89,
-      0x2c8b, 0x2c8b,
-      0x2c8d, 0x2c8d,
-      0x2c8f, 0x2c8f,
-      0x2c91, 0x2c91,
-      0x2c93, 0x2c93,
-      0x2c95, 0x2c95,
-      0x2c97, 0x2c97,
-      0x2c99, 0x2c99,
-      0x2c9b, 0x2c9b,
-      0x2c9d, 0x2c9d,
-      0x2c9f, 0x2c9f,
-      0x2ca1, 0x2ca1,
-      0x2ca3, 0x2ca3,
-      0x2ca5, 0x2ca5,
-      0x2ca7, 0x2ca7,
-      0x2ca9, 0x2ca9,
-      0x2cab, 0x2cab,
-      0x2cad, 0x2cad,
-      0x2caf, 0x2caf,
-      0x2cb1, 0x2cb1,
-      0x2cb3, 0x2cb3,
-      0x2cb5, 0x2cb5,
-      0x2cb7, 0x2cb7,
-      0x2cb9, 0x2cb9,
-      0x2cbb, 0x2cbb,
-      0x2cbd, 0x2cbd,
-      0x2cbf, 0x2cbf,
-      0x2cc1, 0x2cc1,
-      0x2cc3, 0x2cc3,
-      0x2cc5, 0x2cc5,
-      0x2cc7, 0x2cc7,
-      0x2cc9, 0x2cc9,
-      0x2ccb, 0x2ccb,
-      0x2ccd, 0x2ccd,
-      0x2ccf, 0x2ccf,
-      0x2cd1, 0x2cd1,
-      0x2cd3, 0x2cd3,
-      0x2cd5, 0x2cd5,
-      0x2cd7, 0x2cd7,
-      0x2cd9, 0x2cd9,
-      0x2cdb, 0x2cdb,
-      0x2cdd, 0x2cdd,
-      0x2cdf, 0x2cdf,
-      0x2ce1, 0x2ce1,
-      0x2ce3, 0x2ce4,
-      0x2d00, 0x2d25,
-      0xfb00, 0xfb06,
-      0xfb13, 0xfb17,
-      0xff41, 0xff5a,
-      0x10428, 0x1044f,
-      0x1d41a, 0x1d433,
-      0x1d44e, 0x1d454,
-      0x1d456, 0x1d467,
-      0x1d482, 0x1d49b,
-      0x1d4b6, 0x1d4b9,
-      0x1d4bb, 0x1d4bb,
-      0x1d4bd, 0x1d4c3,
-      0x1d4c5, 0x1d4cf,
-      0x1d4ea, 0x1d503,
-      0x1d51e, 0x1d537,
-      0x1d552, 0x1d56b,
-      0x1d586, 0x1d59f,
-      0x1d5ba, 0x1d5d3,
-      0x1d5ee, 0x1d607,
-      0x1d622, 0x1d63b,
-      0x1d656, 0x1d66f,
-      0x1d68a, 0x1d6a5,
-      0x1d6c2, 0x1d6da,
-      0x1d6dc, 0x1d6e1,
-      0x1d6fc, 0x1d714,
-      0x1d716, 0x1d71b,
-      0x1d736, 0x1d74e,
-      0x1d750, 0x1d755,
-      0x1d770, 0x1d788,
-      0x1d78a, 0x1d78f,
-      0x1d7aa, 0x1d7c2,
-      0x1d7c4, 0x1d7c9
-    }; /* CR_Lower */
-
-    /* 'Print': [[:Print:]] */
-    private static final int CR_Print[] = {
-      423,
-      0x0009, 0x000d,
-      0x0020, 0x007e,
-      0x0085, 0x0085,
-      0x00a0, 0x0241,
-      0x0250, 0x036f,
-      0x0374, 0x0375,
-      0x037a, 0x037a,
-      0x037e, 0x037e,
-      0x0384, 0x038a,
-      0x038c, 0x038c,
-      0x038e, 0x03a1,
-      0x03a3, 0x03ce,
-      0x03d0, 0x0486,
-      0x0488, 0x04ce,
-      0x04d0, 0x04f9,
-      0x0500, 0x050f,
-      0x0531, 0x0556,
-      0x0559, 0x055f,
-      0x0561, 0x0587,
-      0x0589, 0x058a,
-      0x0591, 0x05b9,
-      0x05bb, 0x05c7,
-      0x05d0, 0x05ea,
-      0x05f0, 0x05f4,
-      0x0600, 0x0603,
-      0x060b, 0x0615,
-      0x061b, 0x061b,
-      0x061e, 0x061f,
-      0x0621, 0x063a,
-      0x0640, 0x065e,
-      0x0660, 0x070d,
-      0x070f, 0x074a,
-      0x074d, 0x076d,
-      0x0780, 0x07b1,
-      0x0901, 0x0939,
-      0x093c, 0x094d,
-      0x0950, 0x0954,
-      0x0958, 0x0970,
-      0x097d, 0x097d,
-      0x0981, 0x0983,
-      0x0985, 0x098c,
-      0x098f, 0x0990,
-      0x0993, 0x09a8,
-      0x09aa, 0x09b0,
-      0x09b2, 0x09b2,
-      0x09b6, 0x09b9,
-      0x09bc, 0x09c4,
-      0x09c7, 0x09c8,
-      0x09cb, 0x09ce,
-      0x09d7, 0x09d7,
-      0x09dc, 0x09dd,
-      0x09df, 0x09e3,
-      0x09e6, 0x09fa,
-      0x0a01, 0x0a03,
-      0x0a05, 0x0a0a,
-      0x0a0f, 0x0a10,
-      0x0a13, 0x0a28,
-      0x0a2a, 0x0a30,
-      0x0a32, 0x0a33,
-      0x0a35, 0x0a36,
-      0x0a38, 0x0a39,
-      0x0a3c, 0x0a3c,
-      0x0a3e, 0x0a42,
-      0x0a47, 0x0a48,
-      0x0a4b, 0x0a4d,
-      0x0a59, 0x0a5c,
-      0x0a5e, 0x0a5e,
-      0x0a66, 0x0a74,
-      0x0a81, 0x0a83,
-      0x0a85, 0x0a8d,
-      0x0a8f, 0x0a91,
-      0x0a93, 0x0aa8,
-      0x0aaa, 0x0ab0,
-      0x0ab2, 0x0ab3,
-      0x0ab5, 0x0ab9,
-      0x0abc, 0x0ac5,
-      0x0ac7, 0x0ac9,
-      0x0acb, 0x0acd,
-      0x0ad0, 0x0ad0,
-      0x0ae0, 0x0ae3,
-      0x0ae6, 0x0aef,
-      0x0af1, 0x0af1,
-      0x0b01, 0x0b03,
-      0x0b05, 0x0b0c,
-      0x0b0f, 0x0b10,
-      0x0b13, 0x0b28,
-      0x0b2a, 0x0b30,
-      0x0b32, 0x0b33,
-      0x0b35, 0x0b39,
-      0x0b3c, 0x0b43,
-      0x0b47, 0x0b48,
-      0x0b4b, 0x0b4d,
-      0x0b56, 0x0b57,
-      0x0b5c, 0x0b5d,
-      0x0b5f, 0x0b61,
-      0x0b66, 0x0b71,
-      0x0b82, 0x0b83,
-      0x0b85, 0x0b8a,
-      0x0b8e, 0x0b90,
-      0x0b92, 0x0b95,
-      0x0b99, 0x0b9a,
-      0x0b9c, 0x0b9c,
-      0x0b9e, 0x0b9f,
-      0x0ba3, 0x0ba4,
-      0x0ba8, 0x0baa,
-      0x0bae, 0x0bb9,
-      0x0bbe, 0x0bc2,
-      0x0bc6, 0x0bc8,
-      0x0bca, 0x0bcd,
-      0x0bd7, 0x0bd7,
-      0x0be6, 0x0bfa,
-      0x0c01, 0x0c03,
-      0x0c05, 0x0c0c,
-      0x0c0e, 0x0c10,
-      0x0c12, 0x0c28,
-      0x0c2a, 0x0c33,
-      0x0c35, 0x0c39,
-      0x0c3e, 0x0c44,
-      0x0c46, 0x0c48,
-      0x0c4a, 0x0c4d,
-      0x0c55, 0x0c56,
-      0x0c60, 0x0c61,
-      0x0c66, 0x0c6f,
-      0x0c82, 0x0c83,
-      0x0c85, 0x0c8c,
-      0x0c8e, 0x0c90,
-      0x0c92, 0x0ca8,
-      0x0caa, 0x0cb3,
-      0x0cb5, 0x0cb9,
-      0x0cbc, 0x0cc4,
-      0x0cc6, 0x0cc8,
-      0x0cca, 0x0ccd,
-      0x0cd5, 0x0cd6,
-      0x0cde, 0x0cde,
-      0x0ce0, 0x0ce1,
-      0x0ce6, 0x0cef,
-      0x0d02, 0x0d03,
-      0x0d05, 0x0d0c,
-      0x0d0e, 0x0d10,
-      0x0d12, 0x0d28,
-      0x0d2a, 0x0d39,
-      0x0d3e, 0x0d43,
-      0x0d46, 0x0d48,
-      0x0d4a, 0x0d4d,
-      0x0d57, 0x0d57,
-      0x0d60, 0x0d61,
-      0x0d66, 0x0d6f,
-      0x0d82, 0x0d83,
-      0x0d85, 0x0d96,
-      0x0d9a, 0x0db1,
-      0x0db3, 0x0dbb,
-      0x0dbd, 0x0dbd,
-      0x0dc0, 0x0dc6,
-      0x0dca, 0x0dca,
-      0x0dcf, 0x0dd4,
-      0x0dd6, 0x0dd6,
-      0x0dd8, 0x0ddf,
-      0x0df2, 0x0df4,
-      0x0e01, 0x0e3a,
-      0x0e3f, 0x0e5b,
-      0x0e81, 0x0e82,
-      0x0e84, 0x0e84,
-      0x0e87, 0x0e88,
-      0x0e8a, 0x0e8a,
-      0x0e8d, 0x0e8d,
-      0x0e94, 0x0e97,
-      0x0e99, 0x0e9f,
-      0x0ea1, 0x0ea3,
-      0x0ea5, 0x0ea5,
-      0x0ea7, 0x0ea7,
-      0x0eaa, 0x0eab,
-      0x0ead, 0x0eb9,
-      0x0ebb, 0x0ebd,
-      0x0ec0, 0x0ec4,
-      0x0ec6, 0x0ec6,
-      0x0ec8, 0x0ecd,
-      0x0ed0, 0x0ed9,
-      0x0edc, 0x0edd,
-      0x0f00, 0x0f47,
-      0x0f49, 0x0f6a,
-      0x0f71, 0x0f8b,
-      0x0f90, 0x0f97,
-      0x0f99, 0x0fbc,
-      0x0fbe, 0x0fcc,
-      0x0fcf, 0x0fd1,
-      0x1000, 0x1021,
-      0x1023, 0x1027,
-      0x1029, 0x102a,
-      0x102c, 0x1032,
-      0x1036, 0x1039,
-      0x1040, 0x1059,
-      0x10a0, 0x10c5,
-      0x10d0, 0x10fc,
-      0x1100, 0x1159,
-      0x115f, 0x11a2,
-      0x11a8, 0x11f9,
-      0x1200, 0x1248,
-      0x124a, 0x124d,
-      0x1250, 0x1256,
-      0x1258, 0x1258,
-      0x125a, 0x125d,
-      0x1260, 0x1288,
-      0x128a, 0x128d,
-      0x1290, 0x12b0,
-      0x12b2, 0x12b5,
-      0x12b8, 0x12be,
-      0x12c0, 0x12c0,
-      0x12c2, 0x12c5,
-      0x12c8, 0x12d6,
-      0x12d8, 0x1310,
-      0x1312, 0x1315,
-      0x1318, 0x135a,
-      0x135f, 0x137c,
-      0x1380, 0x1399,
-      0x13a0, 0x13f4,
-      0x1401, 0x1676,
-      0x1680, 0x169c,
-      0x16a0, 0x16f0,
-      0x1700, 0x170c,
-      0x170e, 0x1714,
-      0x1720, 0x1736,
-      0x1740, 0x1753,
-      0x1760, 0x176c,
-      0x176e, 0x1770,
-      0x1772, 0x1773,
-      0x1780, 0x17dd,
-      0x17e0, 0x17e9,
-      0x17f0, 0x17f9,
-      0x1800, 0x180e,
-      0x1810, 0x1819,
-      0x1820, 0x1877,
-      0x1880, 0x18a9,
-      0x1900, 0x191c,
-      0x1920, 0x192b,
-      0x1930, 0x193b,
-      0x1940, 0x1940,
-      0x1944, 0x196d,
-      0x1970, 0x1974,
-      0x1980, 0x19a9,
-      0x19b0, 0x19c9,
-      0x19d0, 0x19d9,
-      0x19de, 0x1a1b,
-      0x1a1e, 0x1a1f,
-      0x1d00, 0x1dc3,
-      0x1e00, 0x1e9b,
-      0x1ea0, 0x1ef9,
-      0x1f00, 0x1f15,
-      0x1f18, 0x1f1d,
-      0x1f20, 0x1f45,
-      0x1f48, 0x1f4d,
-      0x1f50, 0x1f57,
-      0x1f59, 0x1f59,
-      0x1f5b, 0x1f5b,
-      0x1f5d, 0x1f5d,
-      0x1f5f, 0x1f7d,
-      0x1f80, 0x1fb4,
-      0x1fb6, 0x1fc4,
-      0x1fc6, 0x1fd3,
-      0x1fd6, 0x1fdb,
-      0x1fdd, 0x1fef,
-      0x1ff2, 0x1ff4,
-      0x1ff6, 0x1ffe,
-      0x2000, 0x2063,
-      0x206a, 0x2071,
-      0x2074, 0x208e,
-      0x2090, 0x2094,
-      0x20a0, 0x20b5,
-      0x20d0, 0x20eb,
-      0x2100, 0x214c,
-      0x2153, 0x2183,
-      0x2190, 0x23db,
-      0x2400, 0x2426,
-      0x2440, 0x244a,
-      0x2460, 0x269c,
-      0x26a0, 0x26b1,
-      0x2701, 0x2704,
-      0x2706, 0x2709,
-      0x270c, 0x2727,
-      0x2729, 0x274b,
-      0x274d, 0x274d,
-      0x274f, 0x2752,
-      0x2756, 0x2756,
-      0x2758, 0x275e,
-      0x2761, 0x2794,
-      0x2798, 0x27af,
-      0x27b1, 0x27be,
-      0x27c0, 0x27c6,
-      0x27d0, 0x27eb,
-      0x27f0, 0x2b13,
-      0x2c00, 0x2c2e,
-      0x2c30, 0x2c5e,
-      0x2c80, 0x2cea,
-      0x2cf9, 0x2d25,
-      0x2d30, 0x2d65,
-      0x2d6f, 0x2d6f,
-      0x2d80, 0x2d96,
-      0x2da0, 0x2da6,
-      0x2da8, 0x2dae,
-      0x2db0, 0x2db6,
-      0x2db8, 0x2dbe,
-      0x2dc0, 0x2dc6,
-      0x2dc8, 0x2dce,
-      0x2dd0, 0x2dd6,
-      0x2dd8, 0x2dde,
-      0x2e00, 0x2e17,
-      0x2e1c, 0x2e1d,
-      0x2e80, 0x2e99,
-      0x2e9b, 0x2ef3,
-      0x2f00, 0x2fd5,
-      0x2ff0, 0x2ffb,
-      0x3000, 0x303f,
-      0x3041, 0x3096,
-      0x3099, 0x30ff,
-      0x3105, 0x312c,
-      0x3131, 0x318e,
-      0x3190, 0x31b7,
-      0x31c0, 0x31cf,
-      0x31f0, 0x321e,
-      0x3220, 0x3243,
-      0x3250, 0x32fe,
-      0x3300, 0x4db5,
-      0x4dc0, 0x9fbb,
-      0xa000, 0xa48c,
-      0xa490, 0xa4c6,
-      0xa700, 0xa716,
-      0xa800, 0xa82b,
-      0xac00, 0xd7a3,
-      0xe000, 0xfa2d,
-      0xfa30, 0xfa6a,
-      0xfa70, 0xfad9,
-      0xfb00, 0xfb06,
-      0xfb13, 0xfb17,
-      0xfb1d, 0xfb36,
-      0xfb38, 0xfb3c,
-      0xfb3e, 0xfb3e,
-      0xfb40, 0xfb41,
-      0xfb43, 0xfb44,
-      0xfb46, 0xfbb1,
-      0xfbd3, 0xfd3f,
-      0xfd50, 0xfd8f,
-      0xfd92, 0xfdc7,
-      0xfdf0, 0xfdfd,
-      0xfe00, 0xfe19,
-      0xfe20, 0xfe23,
-      0xfe30, 0xfe52,
-      0xfe54, 0xfe66,
-      0xfe68, 0xfe6b,
-      0xfe70, 0xfe74,
-      0xfe76, 0xfefc,
-      0xfeff, 0xfeff,
-      0xff01, 0xffbe,
-      0xffc2, 0xffc7,
-      0xffca, 0xffcf,
-      0xffd2, 0xffd7,
-      0xffda, 0xffdc,
-      0xffe0, 0xffe6,
-      0xffe8, 0xffee,
-      0xfff9, 0xfffd,
-      0x10000, 0x1000b,
-      0x1000d, 0x10026,
-      0x10028, 0x1003a,
-      0x1003c, 0x1003d,
-      0x1003f, 0x1004d,
-      0x10050, 0x1005d,
-      0x10080, 0x100fa,
-      0x10100, 0x10102,
-      0x10107, 0x10133,
-      0x10137, 0x1018a,
-      0x10300, 0x1031e,
-      0x10320, 0x10323,
-      0x10330, 0x1034a,
-      0x10380, 0x1039d,
-      0x1039f, 0x103c3,
-      0x103c8, 0x103d5,
-      0x10400, 0x1049d,
-      0x104a0, 0x104a9,
-      0x10800, 0x10805,
-      0x10808, 0x10808,
-      0x1080a, 0x10835,
-      0x10837, 0x10838,
-      0x1083c, 0x1083c,
-      0x1083f, 0x1083f,
-      0x10a00, 0x10a03,
-      0x10a05, 0x10a06,
-      0x10a0c, 0x10a13,
-      0x10a15, 0x10a17,
-      0x10a19, 0x10a33,
-      0x10a38, 0x10a3a,
-      0x10a3f, 0x10a47,
-      0x10a50, 0x10a58,
-      0x1d000, 0x1d0f5,
-      0x1d100, 0x1d126,
-      0x1d12a, 0x1d1dd,
-      0x1d200, 0x1d245,
-      0x1d300, 0x1d356,
-      0x1d400, 0x1d454,
-      0x1d456, 0x1d49c,
-      0x1d49e, 0x1d49f,
-      0x1d4a2, 0x1d4a2,
-      0x1d4a5, 0x1d4a6,
-      0x1d4a9, 0x1d4ac,
-      0x1d4ae, 0x1d4b9,
-      0x1d4bb, 0x1d4bb,
-      0x1d4bd, 0x1d4c3,
-      0x1d4c5, 0x1d505,
-      0x1d507, 0x1d50a,
-      0x1d50d, 0x1d514,
-      0x1d516, 0x1d51c,
-      0x1d51e, 0x1d539,
-      0x1d53b, 0x1d53e,
-      0x1d540, 0x1d544,
-      0x1d546, 0x1d546,
-      0x1d54a, 0x1d550,
-      0x1d552, 0x1d6a5,
-      0x1d6a8, 0x1d7c9,
-      0x1d7ce, 0x1d7ff,
-      0x20000, 0x2a6d6,
-      0x2f800, 0x2fa1d,
-      0xe0001, 0xe0001,
-      0xe0020, 0xe007f,
-      0xe0100, 0xe01ef,
-      0xf0000, 0xffffd,
-      0x100000, 0x10fffd
-    }; /* CR_Print */
-    
-    /* 'Punct': [[:Punct:]] */
-    private static final int CR_Punct[] = {
-      96,
-      0x0021, 0x0023,
-      0x0025, 0x002a,
-      0x002c, 0x002f,
-      0x003a, 0x003b,
-      0x003f, 0x0040,
-      0x005b, 0x005d,
-      0x005f, 0x005f,
-      0x007b, 0x007b,
-      0x007d, 0x007d,
-      0x00a1, 0x00a1,
-      0x00ab, 0x00ab,
-      0x00b7, 0x00b7,
-      0x00bb, 0x00bb,
-      0x00bf, 0x00bf,
-      0x037e, 0x037e,
-      0x0387, 0x0387,
-      0x055a, 0x055f,
-      0x0589, 0x058a,
-      0x05be, 0x05be,
-      0x05c0, 0x05c0,
-      0x05c3, 0x05c3,
-      0x05c6, 0x05c6,
-      0x05f3, 0x05f4,
-      0x060c, 0x060d,
-      0x061b, 0x061b,
-      0x061e, 0x061f,
-      0x066a, 0x066d,
-      0x06d4, 0x06d4,
-      0x0700, 0x070d,
-      0x0964, 0x0965,
-      0x0970, 0x0970,
-      0x0df4, 0x0df4,
-      0x0e4f, 0x0e4f,
-      0x0e5a, 0x0e5b,
-      0x0f04, 0x0f12,
-      0x0f3a, 0x0f3d,
-      0x0f85, 0x0f85,
-      0x0fd0, 0x0fd1,
-      0x104a, 0x104f,
-      0x10fb, 0x10fb,
-      0x1361, 0x1368,
-      0x166d, 0x166e,
-      0x169b, 0x169c,
-      0x16eb, 0x16ed,
-      0x1735, 0x1736,
-      0x17d4, 0x17d6,
-      0x17d8, 0x17da,
-      0x1800, 0x180a,
-      0x1944, 0x1945,
-      0x19de, 0x19df,
-      0x1a1e, 0x1a1f,
-      0x2010, 0x2027,
-      0x2030, 0x2043,
-      0x2045, 0x2051,
-      0x2053, 0x205e,
-      0x207d, 0x207e,
-      0x208d, 0x208e,
-      0x2329, 0x232a,
-      0x23b4, 0x23b6,
-      0x2768, 0x2775,
-      0x27c5, 0x27c6,
-      0x27e6, 0x27eb,
-      0x2983, 0x2998,
-      0x29d8, 0x29db,
-      0x29fc, 0x29fd,
-      0x2cf9, 0x2cfc,
-      0x2cfe, 0x2cff,
-      0x2e00, 0x2e17,
-      0x2e1c, 0x2e1d,
-      0x3001, 0x3003,
-      0x3008, 0x3011,
-      0x3014, 0x301f,
-      0x3030, 0x3030,
-      0x303d, 0x303d,
-      0x30a0, 0x30a0,
-      0x30fb, 0x30fb,
-      0xfd3e, 0xfd3f,
-      0xfe10, 0xfe19,
-      0xfe30, 0xfe52,
-      0xfe54, 0xfe61,
-      0xfe63, 0xfe63,
-      0xfe68, 0xfe68,
-      0xfe6a, 0xfe6b,
-      0xff01, 0xff03,
-      0xff05, 0xff0a,
-      0xff0c, 0xff0f,
-      0xff1a, 0xff1b,
-      0xff1f, 0xff20,
-      0xff3b, 0xff3d,
-      0xff3f, 0xff3f,
-      0xff5b, 0xff5b,
-      0xff5d, 0xff5d,
-      0xff5f, 0xff65,
-      0x10100, 0x10101,
-      0x1039f, 0x1039f,
-      0x10a50, 0x10a58
-    }; /* CR_Punct */
-
-    /* 'Space': [[:Space:]] */
-    private static final int CR_Space[] = {
-      11,
-      0x0009, 0x000d,
-      0x0020, 0x0020,
-      0x0085, 0x0085,
-      0x00a0, 0x00a0,
-      0x1680, 0x1680,
-      0x180e, 0x180e,
-      0x2000, 0x200a,
-      0x2028, 0x2029,
-      0x202f, 0x202f,
-      0x205f, 0x205f,
-      0x3000, 0x3000
-    }; /* CR_Space */
-    
-    /* 'Upper': [[:Upper:]] */
-    private static final int CR_Upper[] = {
-      476,
-      0x0041, 0x005a,
-      0x00c0, 0x00d6,
-      0x00d8, 0x00de,
-      0x0100, 0x0100,
-      0x0102, 0x0102,
-      0x0104, 0x0104,
-      0x0106, 0x0106,
-      0x0108, 0x0108,
-      0x010a, 0x010a,
-      0x010c, 0x010c,
-      0x010e, 0x010e,
-      0x0110, 0x0110,
-      0x0112, 0x0112,
-      0x0114, 0x0114,
-      0x0116, 0x0116,
-      0x0118, 0x0118,
-      0x011a, 0x011a,
-      0x011c, 0x011c,
-      0x011e, 0x011e,
-      0x0120, 0x0120,
-      0x0122, 0x0122,
-      0x0124, 0x0124,
-      0x0126, 0x0126,
-      0x0128, 0x0128,
-      0x012a, 0x012a,
-      0x012c, 0x012c,
-      0x012e, 0x012e,
-      0x0130, 0x0130,
-      0x0132, 0x0132,
-      0x0134, 0x0134,
-      0x0136, 0x0136,
-      0x0139, 0x0139,
-      0x013b, 0x013b,
-      0x013d, 0x013d,
-      0x013f, 0x013f,
-      0x0141, 0x0141,
-      0x0143, 0x0143,
-      0x0145, 0x0145,
-      0x0147, 0x0147,
-      0x014a, 0x014a,
-      0x014c, 0x014c,
-      0x014e, 0x014e,
-      0x0150, 0x0150,
-      0x0152, 0x0152,
-      0x0154, 0x0154,
-      0x0156, 0x0156,
-      0x0158, 0x0158,
-      0x015a, 0x015a,
-      0x015c, 0x015c,
-      0x015e, 0x015e,
-      0x0160, 0x0160,
-      0x0162, 0x0162,
-      0x0164, 0x0164,
-      0x0166, 0x0166,
-      0x0168, 0x0168,
-      0x016a, 0x016a,
-      0x016c, 0x016c,
-      0x016e, 0x016e,
-      0x0170, 0x0170,
-      0x0172, 0x0172,
-      0x0174, 0x0174,
-      0x0176, 0x0176,
-      0x0178, 0x0179,
-      0x017b, 0x017b,
-      0x017d, 0x017d,
-      0x0181, 0x0182,
-      0x0184, 0x0184,
-      0x0186, 0x0187,
-      0x0189, 0x018b,
-      0x018e, 0x0191,
-      0x0193, 0x0194,
-      0x0196, 0x0198,
-      0x019c, 0x019d,
-      0x019f, 0x01a0,
-      0x01a2, 0x01a2,
-      0x01a4, 0x01a4,
-      0x01a6, 0x01a7,
-      0x01a9, 0x01a9,
-      0x01ac, 0x01ac,
-      0x01ae, 0x01af,
-      0x01b1, 0x01b3,
-      0x01b5, 0x01b5,
-      0x01b7, 0x01b8,
-      0x01bc, 0x01bc,
-      0x01c4, 0x01c4,
-      0x01c7, 0x01c7,
-      0x01ca, 0x01ca,
-      0x01cd, 0x01cd,
-      0x01cf, 0x01cf,
-      0x01d1, 0x01d1,
-      0x01d3, 0x01d3,
-      0x01d5, 0x01d5,
-      0x01d7, 0x01d7,
-      0x01d9, 0x01d9,
-      0x01db, 0x01db,
-      0x01de, 0x01de,
-      0x01e0, 0x01e0,
-      0x01e2, 0x01e2,
-      0x01e4, 0x01e4,
-      0x01e6, 0x01e6,
-      0x01e8, 0x01e8,
-      0x01ea, 0x01ea,
-      0x01ec, 0x01ec,
-      0x01ee, 0x01ee,
-      0x01f1, 0x01f1,
-      0x01f4, 0x01f4,
-      0x01f6, 0x01f8,
-      0x01fa, 0x01fa,
-      0x01fc, 0x01fc,
-      0x01fe, 0x01fe,
-      0x0200, 0x0200,
-      0x0202, 0x0202,
-      0x0204, 0x0204,
-      0x0206, 0x0206,
-      0x0208, 0x0208,
-      0x020a, 0x020a,
-      0x020c, 0x020c,
-      0x020e, 0x020e,
-      0x0210, 0x0210,
-      0x0212, 0x0212,
-      0x0214, 0x0214,
-      0x0216, 0x0216,
-      0x0218, 0x0218,
-      0x021a, 0x021a,
-      0x021c, 0x021c,
-      0x021e, 0x021e,
-      0x0220, 0x0220,
-      0x0222, 0x0222,
-      0x0224, 0x0224,
-      0x0226, 0x0226,
-      0x0228, 0x0228,
-      0x022a, 0x022a,
-      0x022c, 0x022c,
-      0x022e, 0x022e,
-      0x0230, 0x0230,
-      0x0232, 0x0232,
-      0x023a, 0x023b,
-      0x023d, 0x023e,
-      0x0241, 0x0241,
-      0x0386, 0x0386,
-      0x0388, 0x038a,
-      0x038c, 0x038c,
-      0x038e, 0x038f,
-      0x0391, 0x03a1,
-      0x03a3, 0x03ab,
-      0x03d2, 0x03d4,
-      0x03d8, 0x03d8,
-      0x03da, 0x03da,
-      0x03dc, 0x03dc,
-      0x03de, 0x03de,
-      0x03e0, 0x03e0,
-      0x03e2, 0x03e2,
-      0x03e4, 0x03e4,
-      0x03e6, 0x03e6,
-      0x03e8, 0x03e8,
-      0x03ea, 0x03ea,
-      0x03ec, 0x03ec,
-      0x03ee, 0x03ee,
-      0x03f4, 0x03f4,
-      0x03f7, 0x03f7,
-      0x03f9, 0x03fa,
-      0x03fd, 0x042f,
-      0x0460, 0x0460,
-      0x0462, 0x0462,
-      0x0464, 0x0464,
-      0x0466, 0x0466,
-      0x0468, 0x0468,
-      0x046a, 0x046a,
-      0x046c, 0x046c,
-      0x046e, 0x046e,
-      0x0470, 0x0470,
-      0x0472, 0x0472,
-      0x0474, 0x0474,
-      0x0476, 0x0476,
-      0x0478, 0x0478,
-      0x047a, 0x047a,
-      0x047c, 0x047c,
-      0x047e, 0x047e,
-      0x0480, 0x0480,
-      0x048a, 0x048a,
-      0x048c, 0x048c,
-      0x048e, 0x048e,
-      0x0490, 0x0490,
-      0x0492, 0x0492,
-      0x0494, 0x0494,
-      0x0496, 0x0496,
-      0x0498, 0x0498,
-      0x049a, 0x049a,
-      0x049c, 0x049c,
-      0x049e, 0x049e,
-      0x04a0, 0x04a0,
-      0x04a2, 0x04a2,
-      0x04a4, 0x04a4,
-      0x04a6, 0x04a6,
-      0x04a8, 0x04a8,
-      0x04aa, 0x04aa,
-      0x04ac, 0x04ac,
-      0x04ae, 0x04ae,
-      0x04b0, 0x04b0,
-      0x04b2, 0x04b2,
-      0x04b4, 0x04b4,
-      0x04b6, 0x04b6,
-      0x04b8, 0x04b8,
-      0x04ba, 0x04ba,
-      0x04bc, 0x04bc,
-      0x04be, 0x04be,
-      0x04c0, 0x04c1,
-      0x04c3, 0x04c3,
-      0x04c5, 0x04c5,
-      0x04c7, 0x04c7,
-      0x04c9, 0x04c9,
-      0x04cb, 0x04cb,
-      0x04cd, 0x04cd,
-      0x04d0, 0x04d0,
-      0x04d2, 0x04d2,
-      0x04d4, 0x04d4,
-      0x04d6, 0x04d6,
-      0x04d8, 0x04d8,
-      0x04da, 0x04da,
-      0x04dc, 0x04dc,
-      0x04de, 0x04de,
-      0x04e0, 0x04e0,
-      0x04e2, 0x04e2,
-      0x04e4, 0x04e4,
-      0x04e6, 0x04e6,
-      0x04e8, 0x04e8,
-      0x04ea, 0x04ea,
-      0x04ec, 0x04ec,
-      0x04ee, 0x04ee,
-      0x04f0, 0x04f0,
-      0x04f2, 0x04f2,
-      0x04f4, 0x04f4,
-      0x04f6, 0x04f6,
-      0x04f8, 0x04f8,
-      0x0500, 0x0500,
-      0x0502, 0x0502,
-      0x0504, 0x0504,
-      0x0506, 0x0506,
-      0x0508, 0x0508,
-      0x050a, 0x050a,
-      0x050c, 0x050c,
-      0x050e, 0x050e,
-      0x0531, 0x0556,
-      0x10a0, 0x10c5,
-      0x1e00, 0x1e00,
-      0x1e02, 0x1e02,
-      0x1e04, 0x1e04,
-      0x1e06, 0x1e06,
-      0x1e08, 0x1e08,
-      0x1e0a, 0x1e0a,
-      0x1e0c, 0x1e0c,
-      0x1e0e, 0x1e0e,
-      0x1e10, 0x1e10,
-      0x1e12, 0x1e12,
-      0x1e14, 0x1e14,
-      0x1e16, 0x1e16,
-      0x1e18, 0x1e18,
-      0x1e1a, 0x1e1a,
-      0x1e1c, 0x1e1c,
-      0x1e1e, 0x1e1e,
-      0x1e20, 0x1e20,
-      0x1e22, 0x1e22,
-      0x1e24, 0x1e24,
-      0x1e26, 0x1e26,
-      0x1e28, 0x1e28,
-      0x1e2a, 0x1e2a,
-      0x1e2c, 0x1e2c,
-      0x1e2e, 0x1e2e,
-      0x1e30, 0x1e30,
-      0x1e32, 0x1e32,
-      0x1e34, 0x1e34,
-      0x1e36, 0x1e36,
-      0x1e38, 0x1e38,
-      0x1e3a, 0x1e3a,
-      0x1e3c, 0x1e3c,
-      0x1e3e, 0x1e3e,
-      0x1e40, 0x1e40,
-      0x1e42, 0x1e42,
-      0x1e44, 0x1e44,
-      0x1e46, 0x1e46,
-      0x1e48, 0x1e48,
-      0x1e4a, 0x1e4a,
-      0x1e4c, 0x1e4c,
-      0x1e4e, 0x1e4e,
-      0x1e50, 0x1e50,
-      0x1e52, 0x1e52,
-      0x1e54, 0x1e54,
-      0x1e56, 0x1e56,
-      0x1e58, 0x1e58,
-      0x1e5a, 0x1e5a,
-      0x1e5c, 0x1e5c,
-      0x1e5e, 0x1e5e,
-      0x1e60, 0x1e60,
-      0x1e62, 0x1e62,
-      0x1e64, 0x1e64,
-      0x1e66, 0x1e66,
-      0x1e68, 0x1e68,
-      0x1e6a, 0x1e6a,
-      0x1e6c, 0x1e6c,
-      0x1e6e, 0x1e6e,
-      0x1e70, 0x1e70,
-      0x1e72, 0x1e72,
-      0x1e74, 0x1e74,
-      0x1e76, 0x1e76,
-      0x1e78, 0x1e78,
-      0x1e7a, 0x1e7a,
-      0x1e7c, 0x1e7c,
-      0x1e7e, 0x1e7e,
-      0x1e80, 0x1e80,
-      0x1e82, 0x1e82,
-      0x1e84, 0x1e84,
-      0x1e86, 0x1e86,
-      0x1e88, 0x1e88,
-      0x1e8a, 0x1e8a,
-      0x1e8c, 0x1e8c,
-      0x1e8e, 0x1e8e,
-      0x1e90, 0x1e90,
-      0x1e92, 0x1e92,
-      0x1e94, 0x1e94,
-      0x1ea0, 0x1ea0,
-      0x1ea2, 0x1ea2,
-      0x1ea4, 0x1ea4,
-      0x1ea6, 0x1ea6,
-      0x1ea8, 0x1ea8,
-      0x1eaa, 0x1eaa,
-      0x1eac, 0x1eac,
-      0x1eae, 0x1eae,
-      0x1eb0, 0x1eb0,
-      0x1eb2, 0x1eb2,
-      0x1eb4, 0x1eb4,
-      0x1eb6, 0x1eb6,
-      0x1eb8, 0x1eb8,
-      0x1eba, 0x1eba,
-      0x1ebc, 0x1ebc,
-      0x1ebe, 0x1ebe,
-      0x1ec0, 0x1ec0,
-      0x1ec2, 0x1ec2,
-      0x1ec4, 0x1ec4,
-      0x1ec6, 0x1ec6,
-      0x1ec8, 0x1ec8,
-      0x1eca, 0x1eca,
-      0x1ecc, 0x1ecc,
-      0x1ece, 0x1ece,
-      0x1ed0, 0x1ed0,
-      0x1ed2, 0x1ed2,
-      0x1ed4, 0x1ed4,
-      0x1ed6, 0x1ed6,
-      0x1ed8, 0x1ed8,
-      0x1eda, 0x1eda,
-      0x1edc, 0x1edc,
-      0x1ede, 0x1ede,
-      0x1ee0, 0x1ee0,
-      0x1ee2, 0x1ee2,
-      0x1ee4, 0x1ee4,
-      0x1ee6, 0x1ee6,
-      0x1ee8, 0x1ee8,
-      0x1eea, 0x1eea,
-      0x1eec, 0x1eec,
-      0x1eee, 0x1eee,
-      0x1ef0, 0x1ef0,
-      0x1ef2, 0x1ef2,
-      0x1ef4, 0x1ef4,
-      0x1ef6, 0x1ef6,
-      0x1ef8, 0x1ef8,
-      0x1f08, 0x1f0f,
-      0x1f18, 0x1f1d,
-      0x1f28, 0x1f2f,
-      0x1f38, 0x1f3f,
-      0x1f48, 0x1f4d,
-      0x1f59, 0x1f59,
-      0x1f5b, 0x1f5b,
-      0x1f5d, 0x1f5d,
-      0x1f5f, 0x1f5f,
-      0x1f68, 0x1f6f,
-      0x1fb8, 0x1fbb,
-      0x1fc8, 0x1fcb,
-      0x1fd8, 0x1fdb,
-      0x1fe8, 0x1fec,
-      0x1ff8, 0x1ffb,
-      0x2102, 0x2102,
-      0x2107, 0x2107,
-      0x210b, 0x210d,
-      0x2110, 0x2112,
-      0x2115, 0x2115,
-      0x2119, 0x211d,
-      0x2124, 0x2124,
-      0x2126, 0x2126,
-      0x2128, 0x2128,
-      0x212a, 0x212d,
-      0x2130, 0x2131,
-      0x2133, 0x2133,
-      0x213e, 0x213f,
-      0x2145, 0x2145,
-      0x2c00, 0x2c2e,
-      0x2c80, 0x2c80,
-      0x2c82, 0x2c82,
-      0x2c84, 0x2c84,
-      0x2c86, 0x2c86,
-      0x2c88, 0x2c88,
-      0x2c8a, 0x2c8a,
-      0x2c8c, 0x2c8c,
-      0x2c8e, 0x2c8e,
-      0x2c90, 0x2c90,
-      0x2c92, 0x2c92,
-      0x2c94, 0x2c94,
-      0x2c96, 0x2c96,
-      0x2c98, 0x2c98,
-      0x2c9a, 0x2c9a,
-      0x2c9c, 0x2c9c,
-      0x2c9e, 0x2c9e,
-      0x2ca0, 0x2ca0,
-      0x2ca2, 0x2ca2,
-      0x2ca4, 0x2ca4,
-      0x2ca6, 0x2ca6,
-      0x2ca8, 0x2ca8,
-      0x2caa, 0x2caa,
-      0x2cac, 0x2cac,
-      0x2cae, 0x2cae,
-      0x2cb0, 0x2cb0,
-      0x2cb2, 0x2cb2,
-      0x2cb4, 0x2cb4,
-      0x2cb6, 0x2cb6,
-      0x2cb8, 0x2cb8,
-      0x2cba, 0x2cba,
-      0x2cbc, 0x2cbc,
-      0x2cbe, 0x2cbe,
-      0x2cc0, 0x2cc0,
-      0x2cc2, 0x2cc2,
-      0x2cc4, 0x2cc4,
-      0x2cc6, 0x2cc6,
-      0x2cc8, 0x2cc8,
-      0x2cca, 0x2cca,
-      0x2ccc, 0x2ccc,
-      0x2cce, 0x2cce,
-      0x2cd0, 0x2cd0,
-      0x2cd2, 0x2cd2,
-      0x2cd4, 0x2cd4,
-      0x2cd6, 0x2cd6,
-      0x2cd8, 0x2cd8,
-      0x2cda, 0x2cda,
-      0x2cdc, 0x2cdc,
-      0x2cde, 0x2cde,
-      0x2ce0, 0x2ce0,
-      0x2ce2, 0x2ce2,
-      0xff21, 0xff3a,
-      0x10400, 0x10427,
-      0x1d400, 0x1d419,
-      0x1d434, 0x1d44d,
-      0x1d468, 0x1d481,
-      0x1d49c, 0x1d49c,
-      0x1d49e, 0x1d49f,
-      0x1d4a2, 0x1d4a2,
-      0x1d4a5, 0x1d4a6,
-      0x1d4a9, 0x1d4ac,
-      0x1d4ae, 0x1d4b5,
-      0x1d4d0, 0x1d4e9,
-      0x1d504, 0x1d505,
-      0x1d507, 0x1d50a,
-      0x1d50d, 0x1d514,
-      0x1d516, 0x1d51c,
-      0x1d538, 0x1d539,
-      0x1d53b, 0x1d53e,
-      0x1d540, 0x1d544,
-      0x1d546, 0x1d546,
-      0x1d54a, 0x1d550,
-      0x1d56c, 0x1d585,
-      0x1d5a0, 0x1d5b9,
-      0x1d5d4, 0x1d5ed,
-      0x1d608, 0x1d621,
-      0x1d63c, 0x1d655,
-      0x1d670, 0x1d689,
-      0x1d6a8, 0x1d6c0,
-      0x1d6e2, 0x1d6fa,
-      0x1d71c, 0x1d734,
-      0x1d756, 0x1d76e,
-      0x1d790, 0x1d7a8
-    }; /* CR_Upper */
-    
-    /* 'XDigit': [[:XDigit:]] */
-    private static final int CR_XDigit[] = {
-      3,
-      0x0030, 0x0039,
-      0x0041, 0x0046,
-      0x0061, 0x0066
-    }; /* CR_XDigit */
-
-    /* 'Word': [[:Word:]] */
-    private static final int CR_Word[] = {
-      464,
-      0x0030, 0x0039,
-      0x0041, 0x005a,
-      0x005f, 0x005f,
-      0x0061, 0x007a,
-      0x00aa, 0x00aa,
-      0x00b2, 0x00b3,
-      0x00b5, 0x00b5,
-      0x00b9, 0x00ba,
-      0x00bc, 0x00be,
-      0x00c0, 0x00d6,
-      0x00d8, 0x00f6,
-      0x00f8, 0x0241,
-      0x0250, 0x02c1,
-      0x02c6, 0x02d1,
-      0x02e0, 0x02e4,
-      0x02ee, 0x02ee,
-      0x0300, 0x036f,
-      0x037a, 0x037a,
-      0x0386, 0x0386,
-      0x0388, 0x038a,
-      0x038c, 0x038c,
-      0x038e, 0x03a1,
-      0x03a3, 0x03ce,
-      0x03d0, 0x03f5,
-      0x03f7, 0x0481,
-      0x0483, 0x0486,
-      0x0488, 0x04ce,
-      0x04d0, 0x04f9,
-      0x0500, 0x050f,
-      0x0531, 0x0556,
-      0x0559, 0x0559,
-      0x0561, 0x0587,
-      0x0591, 0x05b9,
-      0x05bb, 0x05bd,
-      0x05bf, 0x05bf,
-      0x05c1, 0x05c2,
-      0x05c4, 0x05c5,
-      0x05c7, 0x05c7,
-      0x05d0, 0x05ea,
-      0x05f0, 0x05f2,
-      0x0610, 0x0615,
-      0x0621, 0x063a,
-      0x0640, 0x065e,
-      0x0660, 0x0669,
-      0x066e, 0x06d3,
-      0x06d5, 0x06dc,
-      0x06de, 0x06e8,
-      0x06ea, 0x06fc,
-      0x06ff, 0x06ff,
-      0x0710, 0x074a,
-      0x074d, 0x076d,
-      0x0780, 0x07b1,
-      0x0901, 0x0939,
-      0x093c, 0x094d,
-      0x0950, 0x0954,
-      0x0958, 0x0963,
-      0x0966, 0x096f,
-      0x097d, 0x097d,
-      0x0981, 0x0983,
-      0x0985, 0x098c,
-      0x098f, 0x0990,
-      0x0993, 0x09a8,
-      0x09aa, 0x09b0,
-      0x09b2, 0x09b2,
-      0x09b6, 0x09b9,
-      0x09bc, 0x09c4,
-      0x09c7, 0x09c8,
-      0x09cb, 0x09ce,
-      0x09d7, 0x09d7,
-      0x09dc, 0x09dd,
-      0x09df, 0x09e3,
-      0x09e6, 0x09f1,
-      0x09f4, 0x09f9,
-      0x0a01, 0x0a03,
-      0x0a05, 0x0a0a,
-      0x0a0f, 0x0a10,
-      0x0a13, 0x0a28,
-      0x0a2a, 0x0a30,
-      0x0a32, 0x0a33,
-      0x0a35, 0x0a36,
-      0x0a38, 0x0a39,
-      0x0a3c, 0x0a3c,
-      0x0a3e, 0x0a42,
-      0x0a47, 0x0a48,
-      0x0a4b, 0x0a4d,
-      0x0a59, 0x0a5c,
-      0x0a5e, 0x0a5e,
-      0x0a66, 0x0a74,
-      0x0a81, 0x0a83,
-      0x0a85, 0x0a8d,
-      0x0a8f, 0x0a91,
-      0x0a93, 0x0aa8,
-      0x0aaa, 0x0ab0,
-      0x0ab2, 0x0ab3,
-      0x0ab5, 0x0ab9,
-      0x0abc, 0x0ac5,
-      0x0ac7, 0x0ac9,
-      0x0acb, 0x0acd,
-      0x0ad0, 0x0ad0,
-      0x0ae0, 0x0ae3,
-      0x0ae6, 0x0aef,
-      0x0b01, 0x0b03,
-      0x0b05, 0x0b0c,
-      0x0b0f, 0x0b10,
-      0x0b13, 0x0b28,
-      0x0b2a, 0x0b30,
-      0x0b32, 0x0b33,
-      0x0b35, 0x0b39,
-      0x0b3c, 0x0b43,
-      0x0b47, 0x0b48,
-      0x0b4b, 0x0b4d,
-      0x0b56, 0x0b57,
-      0x0b5c, 0x0b5d,
-      0x0b5f, 0x0b61,
-      0x0b66, 0x0b6f,
-      0x0b71, 0x0b71,
-      0x0b82, 0x0b83,
-      0x0b85, 0x0b8a,
-      0x0b8e, 0x0b90,
-      0x0b92, 0x0b95,
-      0x0b99, 0x0b9a,
-      0x0b9c, 0x0b9c,
-      0x0b9e, 0x0b9f,
-      0x0ba3, 0x0ba4,
-      0x0ba8, 0x0baa,
-      0x0bae, 0x0bb9,
-      0x0bbe, 0x0bc2,
-      0x0bc6, 0x0bc8,
-      0x0bca, 0x0bcd,
-      0x0bd7, 0x0bd7,
-      0x0be6, 0x0bf2,
-      0x0c01, 0x0c03,
-      0x0c05, 0x0c0c,
-      0x0c0e, 0x0c10,
-      0x0c12, 0x0c28,
-      0x0c2a, 0x0c33,
-      0x0c35, 0x0c39,
-      0x0c3e, 0x0c44,
-      0x0c46, 0x0c48,
-      0x0c4a, 0x0c4d,
-      0x0c55, 0x0c56,
-      0x0c60, 0x0c61,
-      0x0c66, 0x0c6f,
-      0x0c82, 0x0c83,
-      0x0c85, 0x0c8c,
-      0x0c8e, 0x0c90,
-      0x0c92, 0x0ca8,
-      0x0caa, 0x0cb3,
-      0x0cb5, 0x0cb9,
-      0x0cbc, 0x0cc4,
-      0x0cc6, 0x0cc8,
-      0x0cca, 0x0ccd,
-      0x0cd5, 0x0cd6,
-      0x0cde, 0x0cde,
-      0x0ce0, 0x0ce1,
-      0x0ce6, 0x0cef,
-      0x0d02, 0x0d03,
-      0x0d05, 0x0d0c,
-      0x0d0e, 0x0d10,
-      0x0d12, 0x0d28,
-      0x0d2a, 0x0d39,
-      0x0d3e, 0x0d43,
-      0x0d46, 0x0d48,
-      0x0d4a, 0x0d4d,
-      0x0d57, 0x0d57,
-      0x0d60, 0x0d61,
-      0x0d66, 0x0d6f,
-      0x0d82, 0x0d83,
-      0x0d85, 0x0d96,
-      0x0d9a, 0x0db1,
-      0x0db3, 0x0dbb,
-      0x0dbd, 0x0dbd,
-      0x0dc0, 0x0dc6,
-      0x0dca, 0x0dca,
-      0x0dcf, 0x0dd4,
-      0x0dd6, 0x0dd6,
-      0x0dd8, 0x0ddf,
-      0x0df2, 0x0df3,
-      0x0e01, 0x0e3a,
-      0x0e40, 0x0e4e,
-      0x0e50, 0x0e59,
-      0x0e81, 0x0e82,
-      0x0e84, 0x0e84,
-      0x0e87, 0x0e88,
-      0x0e8a, 0x0e8a,
-      0x0e8d, 0x0e8d,
-      0x0e94, 0x0e97,
-      0x0e99, 0x0e9f,
-      0x0ea1, 0x0ea3,
-      0x0ea5, 0x0ea5,
-      0x0ea7, 0x0ea7,
-      0x0eaa, 0x0eab,
-      0x0ead, 0x0eb9,
-      0x0ebb, 0x0ebd,
-      0x0ec0, 0x0ec4,
-      0x0ec6, 0x0ec6,
-      0x0ec8, 0x0ecd,
-      0x0ed0, 0x0ed9,
-      0x0edc, 0x0edd,
-      0x0f00, 0x0f00,
-      0x0f18, 0x0f19,
-      0x0f20, 0x0f33,
-      0x0f35, 0x0f35,
-      0x0f37, 0x0f37,
-      0x0f39, 0x0f39,
-      0x0f3e, 0x0f47,
-      0x0f49, 0x0f6a,
-      0x0f71, 0x0f84,
-      0x0f86, 0x0f8b,
-      0x0f90, 0x0f97,
-      0x0f99, 0x0fbc,
-      0x0fc6, 0x0fc6,
-      0x1000, 0x1021,
-      0x1023, 0x1027,
-      0x1029, 0x102a,
-      0x102c, 0x1032,
-      0x1036, 0x1039,
-      0x1040, 0x1049,
-      0x1050, 0x1059,
-      0x10a0, 0x10c5,
-      0x10d0, 0x10fa,
-      0x10fc, 0x10fc,
-      0x1100, 0x1159,
-      0x115f, 0x11a2,
-      0x11a8, 0x11f9,
-      0x1200, 0x1248,
-      0x124a, 0x124d,
-      0x1250, 0x1256,
-      0x1258, 0x1258,
-      0x125a, 0x125d,
-      0x1260, 0x1288,
-      0x128a, 0x128d,
-      0x1290, 0x12b0,
-      0x12b2, 0x12b5,
-      0x12b8, 0x12be,
-      0x12c0, 0x12c0,
-      0x12c2, 0x12c5,
-      0x12c8, 0x12d6,
-      0x12d8, 0x1310,
-      0x1312, 0x1315,
-      0x1318, 0x135a,
-      0x135f, 0x135f,
-      0x1369, 0x137c,
-      0x1380, 0x138f,
-      0x13a0, 0x13f4,
-      0x1401, 0x166c,
-      0x166f, 0x1676,
-      0x1681, 0x169a,
-      0x16a0, 0x16ea,
-      0x16ee, 0x16f0,
-      0x1700, 0x170c,
-      0x170e, 0x1714,
-      0x1720, 0x1734,
-      0x1740, 0x1753,
-      0x1760, 0x176c,
-      0x176e, 0x1770,
-      0x1772, 0x1773,
-      0x1780, 0x17b3,
-      0x17b6, 0x17d3,
-      0x17d7, 0x17d7,
-      0x17dc, 0x17dd,
-      0x17e0, 0x17e9,
-      0x17f0, 0x17f9,
-      0x180b, 0x180d,
-      0x1810, 0x1819,
-      0x1820, 0x1877,
-      0x1880, 0x18a9,
-      0x1900, 0x191c,
-      0x1920, 0x192b,
-      0x1930, 0x193b,
-      0x1946, 0x196d,
-      0x1970, 0x1974,
-      0x1980, 0x19a9,
-      0x19b0, 0x19c9,
-      0x19d0, 0x19d9,
-      0x1a00, 0x1a1b,
-      0x1d00, 0x1dc3,
-      0x1e00, 0x1e9b,
-      0x1ea0, 0x1ef9,
-      0x1f00, 0x1f15,
-      0x1f18, 0x1f1d,
-      0x1f20, 0x1f45,
-      0x1f48, 0x1f4d,
-      0x1f50, 0x1f57,
-      0x1f59, 0x1f59,
-      0x1f5b, 0x1f5b,
-      0x1f5d, 0x1f5d,
-      0x1f5f, 0x1f7d,
-      0x1f80, 0x1fb4,
-      0x1fb6, 0x1fbc,
-      0x1fbe, 0x1fbe,
-      0x1fc2, 0x1fc4,
-      0x1fc6, 0x1fcc,
-      0x1fd0, 0x1fd3,
-      0x1fd6, 0x1fdb,
-      0x1fe0, 0x1fec,
-      0x1ff2, 0x1ff4,
-      0x1ff6, 0x1ffc,
-      0x203f, 0x2040,
-      0x2054, 0x2054,
-      0x2070, 0x2071,
-      0x2074, 0x2079,
-      0x207f, 0x2089,
-      0x2090, 0x2094,
-      0x20d0, 0x20eb,
-      0x2102, 0x2102,
-      0x2107, 0x2107,
-      0x210a, 0x2113,
-      0x2115, 0x2115,
-      0x2119, 0x211d,
-      0x2124, 0x2124,
-      0x2126, 0x2126,
-      0x2128, 0x2128,
-      0x212a, 0x212d,
-      0x212f, 0x2131,
-      0x2133, 0x2139,
-      0x213c, 0x213f,
-      0x2145, 0x2149,
-      0x2153, 0x2183,
-      0x2460, 0x249b,
-      0x24ea, 0x24ff,
-      0x2776, 0x2793,
-      0x2c00, 0x2c2e,
-      0x2c30, 0x2c5e,
-      0x2c80, 0x2ce4,
-      0x2cfd, 0x2cfd,
-      0x2d00, 0x2d25,
-      0x2d30, 0x2d65,
-      0x2d6f, 0x2d6f,
-      0x2d80, 0x2d96,
-      0x2da0, 0x2da6,
-      0x2da8, 0x2dae,
-      0x2db0, 0x2db6,
-      0x2db8, 0x2dbe,
-      0x2dc0, 0x2dc6,
-      0x2dc8, 0x2dce,
-      0x2dd0, 0x2dd6,
-      0x2dd8, 0x2dde,
-      0x3005, 0x3007,
-      0x3021, 0x302f,
-      0x3031, 0x3035,
-      0x3038, 0x303c,
-      0x3041, 0x3096,
-      0x3099, 0x309a,
-      0x309d, 0x309f,
-      0x30a1, 0x30fa,
-      0x30fc, 0x30ff,
-      0x3105, 0x312c,
-      0x3131, 0x318e,
-      0x3192, 0x3195,
-      0x31a0, 0x31b7,
-      0x31f0, 0x31ff,
-      0x3220, 0x3229,
-      0x3251, 0x325f,
-      0x3280, 0x3289,
-      0x32b1, 0x32bf,
-      0x3400, 0x4db5,
-      0x4e00, 0x9fbb,
-      0xa000, 0xa48c,
-      0xa800, 0xa827,
-      0xac00, 0xd7a3,
-      0xf900, 0xfa2d,
-      0xfa30, 0xfa6a,
-      0xfa70, 0xfad9,
-      0xfb00, 0xfb06,
-      0xfb13, 0xfb17,
-      0xfb1d, 0xfb28,
-      0xfb2a, 0xfb36,
-      0xfb38, 0xfb3c,
-      0xfb3e, 0xfb3e,
-      0xfb40, 0xfb41,
-      0xfb43, 0xfb44,
-      0xfb46, 0xfbb1,
-      0xfbd3, 0xfd3d,
-      0xfd50, 0xfd8f,
-      0xfd92, 0xfdc7,
-      0xfdf0, 0xfdfb,
-      0xfe00, 0xfe0f,
-      0xfe20, 0xfe23,
-      0xfe33, 0xfe34,
-      0xfe4d, 0xfe4f,
-      0xfe70, 0xfe74,
-      0xfe76, 0xfefc,
-      0xff10, 0xff19,
-      0xff21, 0xff3a,
-      0xff3f, 0xff3f,
-      0xff41, 0xff5a,
-      0xff66, 0xffbe,
-      0xffc2, 0xffc7,
-      0xffca, 0xffcf,
-      0xffd2, 0xffd7,
-      0xffda, 0xffdc,
-      0x10000, 0x1000b,
-      0x1000d, 0x10026,
-      0x10028, 0x1003a,
-      0x1003c, 0x1003d,
-      0x1003f, 0x1004d,
-      0x10050, 0x1005d,
-      0x10080, 0x100fa,
-      0x10107, 0x10133,
-      0x10140, 0x10178,
-      0x1018a, 0x1018a,
-      0x10300, 0x1031e,
-      0x10320, 0x10323,
-      0x10330, 0x1034a,
-      0x10380, 0x1039d,
-      0x103a0, 0x103c3,
-      0x103c8, 0x103cf,
-      0x103d1, 0x103d5,
-      0x10400, 0x1049d,
-      0x104a0, 0x104a9,
-      0x10800, 0x10805,
-      0x10808, 0x10808,
-      0x1080a, 0x10835,
-      0x10837, 0x10838,
-      0x1083c, 0x1083c,
-      0x1083f, 0x1083f,
-      0x10a00, 0x10a03,
-      0x10a05, 0x10a06,
-      0x10a0c, 0x10a13,
-      0x10a15, 0x10a17,
-      0x10a19, 0x10a33,
-      0x10a38, 0x10a3a,
-      0x10a3f, 0x10a47,
-      0x1d165, 0x1d169,
-      0x1d16d, 0x1d172,
-      0x1d17b, 0x1d182,
-      0x1d185, 0x1d18b,
-      0x1d1aa, 0x1d1ad,
-      0x1d242, 0x1d244,
-      0x1d400, 0x1d454,
-      0x1d456, 0x1d49c,
-      0x1d49e, 0x1d49f,
-      0x1d4a2, 0x1d4a2,
-      0x1d4a5, 0x1d4a6,
-      0x1d4a9, 0x1d4ac,
-      0x1d4ae, 0x1d4b9,
-      0x1d4bb, 0x1d4bb,
-      0x1d4bd, 0x1d4c3,
-      0x1d4c5, 0x1d505,
-      0x1d507, 0x1d50a,
-      0x1d50d, 0x1d514,
-      0x1d516, 0x1d51c,
-      0x1d51e, 0x1d539,
-      0x1d53b, 0x1d53e,
-      0x1d540, 0x1d544,
-      0x1d546, 0x1d546,
-      0x1d54a, 0x1d550,
-      0x1d552, 0x1d6a5,
-      0x1d6a8, 0x1d6c0,
-      0x1d6c2, 0x1d6da,
-      0x1d6dc, 0x1d6fa,
-      0x1d6fc, 0x1d714,
-      0x1d716, 0x1d734,
-      0x1d736, 0x1d74e,
-      0x1d750, 0x1d76e,
-      0x1d770, 0x1d788,
-      0x1d78a, 0x1d7a8,
-      0x1d7aa, 0x1d7c2,
-      0x1d7c4, 0x1d7c9,
-      0x1d7ce, 0x1d7ff,
-      0x20000, 0x2a6d6,
-      0x2f800, 0x2fa1d,
-      0xe0100, 0xe01ef
-    }; /* CR_Word */
-
-    /* 'Alnum': [[:Alnum:]] */
-    private static final int CR_Alnum[] = {
-      436,
-      0x0030, 0x0039,
-      0x0041, 0x005a,
-      0x0061, 0x007a,
-      0x00aa, 0x00aa,
-      0x00b5, 0x00b5,
-      0x00ba, 0x00ba,
-      0x00c0, 0x00d6,
-      0x00d8, 0x00f6,
-      0x00f8, 0x0241,
-      0x0250, 0x02c1,
-      0x02c6, 0x02d1,
-      0x02e0, 0x02e4,
-      0x02ee, 0x02ee,
-      0x0300, 0x036f,
-      0x037a, 0x037a,
-      0x0386, 0x0386,
-      0x0388, 0x038a,
-      0x038c, 0x038c,
-      0x038e, 0x03a1,
-      0x03a3, 0x03ce,
-      0x03d0, 0x03f5,
-      0x03f7, 0x0481,
-      0x0483, 0x0486,
-      0x0488, 0x04ce,
-      0x04d0, 0x04f9,
-      0x0500, 0x050f,
-      0x0531, 0x0556,
-      0x0559, 0x0559,
-      0x0561, 0x0587,
-      0x0591, 0x05b9,
-      0x05bb, 0x05bd,
-      0x05bf, 0x05bf,
-      0x05c1, 0x05c2,
-      0x05c4, 0x05c5,
-      0x05c7, 0x05c7,
-      0x05d0, 0x05ea,
-      0x05f0, 0x05f2,
-      0x0610, 0x0615,
-      0x0621, 0x063a,
-      0x0640, 0x065e,
-      0x0660, 0x0669,
-      0x066e, 0x06d3,
-      0x06d5, 0x06dc,
-      0x06de, 0x06e8,
-      0x06ea, 0x06fc,
-      0x06ff, 0x06ff,
-      0x0710, 0x074a,
-      0x074d, 0x076d,
-      0x0780, 0x07b1,
-      0x0901, 0x0939,
-      0x093c, 0x094d,
-      0x0950, 0x0954,
-      0x0958, 0x0963,
-      0x0966, 0x096f,
-      0x097d, 0x097d,
-      0x0981, 0x0983,
-      0x0985, 0x098c,
-      0x098f, 0x0990,
-      0x0993, 0x09a8,
-      0x09aa, 0x09b0,
-      0x09b2, 0x09b2,
-      0x09b6, 0x09b9,
-      0x09bc, 0x09c4,
-      0x09c7, 0x09c8,
-      0x09cb, 0x09ce,
-      0x09d7, 0x09d7,
-      0x09dc, 0x09dd,
-      0x09df, 0x09e3,
-      0x09e6, 0x09f1,
-      0x0a01, 0x0a03,
-      0x0a05, 0x0a0a,
-      0x0a0f, 0x0a10,
-      0x0a13, 0x0a28,
-      0x0a2a, 0x0a30,
-      0x0a32, 0x0a33,
-      0x0a35, 0x0a36,
-      0x0a38, 0x0a39,
-      0x0a3c, 0x0a3c,
-      0x0a3e, 0x0a42,
-      0x0a47, 0x0a48,
-      0x0a4b, 0x0a4d,
-      0x0a59, 0x0a5c,
-      0x0a5e, 0x0a5e,
-      0x0a66, 0x0a74,
-      0x0a81, 0x0a83,
-      0x0a85, 0x0a8d,
-      0x0a8f, 0x0a91,
-      0x0a93, 0x0aa8,
-      0x0aaa, 0x0ab0,
-      0x0ab2, 0x0ab3,
-      0x0ab5, 0x0ab9,
-      0x0abc, 0x0ac5,
-      0x0ac7, 0x0ac9,
-      0x0acb, 0x0acd,
-      0x0ad0, 0x0ad0,
-      0x0ae0, 0x0ae3,
-      0x0ae6, 0x0aef,
-      0x0b01, 0x0b03,
-      0x0b05, 0x0b0c,
-      0x0b0f, 0x0b10,
-      0x0b13, 0x0b28,
-      0x0b2a, 0x0b30,
-      0x0b32, 0x0b33,
-      0x0b35, 0x0b39,
-      0x0b3c, 0x0b43,
-      0x0b47, 0x0b48,
-      0x0b4b, 0x0b4d,
-      0x0b56, 0x0b57,
-      0x0b5c, 0x0b5d,
-      0x0b5f, 0x0b61,
-      0x0b66, 0x0b6f,
-      0x0b71, 0x0b71,
-      0x0b82, 0x0b83,
-      0x0b85, 0x0b8a,
-      0x0b8e, 0x0b90,
-      0x0b92, 0x0b95,
-      0x0b99, 0x0b9a,
-      0x0b9c, 0x0b9c,
-      0x0b9e, 0x0b9f,
-      0x0ba3, 0x0ba4,
-      0x0ba8, 0x0baa,
-      0x0bae, 0x0bb9,
-      0x0bbe, 0x0bc2,
-      0x0bc6, 0x0bc8,
-      0x0bca, 0x0bcd,
-      0x0bd7, 0x0bd7,
-      0x0be6, 0x0bef,
-      0x0c01, 0x0c03,
-      0x0c05, 0x0c0c,
-      0x0c0e, 0x0c10,
-      0x0c12, 0x0c28,
-      0x0c2a, 0x0c33,
-      0x0c35, 0x0c39,
-      0x0c3e, 0x0c44,
-      0x0c46, 0x0c48,
-      0x0c4a, 0x0c4d,
-      0x0c55, 0x0c56,
-      0x0c60, 0x0c61,
-      0x0c66, 0x0c6f,
-      0x0c82, 0x0c83,
-      0x0c85, 0x0c8c,
-      0x0c8e, 0x0c90,
-      0x0c92, 0x0ca8,
-      0x0caa, 0x0cb3,
-      0x0cb5, 0x0cb9,
-      0x0cbc, 0x0cc4,
-      0x0cc6, 0x0cc8,
-      0x0cca, 0x0ccd,
-      0x0cd5, 0x0cd6,
-      0x0cde, 0x0cde,
-      0x0ce0, 0x0ce1,
-      0x0ce6, 0x0cef,
-      0x0d02, 0x0d03,
-      0x0d05, 0x0d0c,
-      0x0d0e, 0x0d10,
-      0x0d12, 0x0d28,
-      0x0d2a, 0x0d39,
-      0x0d3e, 0x0d43,
-      0x0d46, 0x0d48,
-      0x0d4a, 0x0d4d,
-      0x0d57, 0x0d57,
-      0x0d60, 0x0d61,
-      0x0d66, 0x0d6f,
-      0x0d82, 0x0d83,
-      0x0d85, 0x0d96,
-      0x0d9a, 0x0db1,
-      0x0db3, 0x0dbb,
-      0x0dbd, 0x0dbd,
-      0x0dc0, 0x0dc6,
-      0x0dca, 0x0dca,
-      0x0dcf, 0x0dd4,
-      0x0dd6, 0x0dd6,
-      0x0dd8, 0x0ddf,
-      0x0df2, 0x0df3,
-      0x0e01, 0x0e3a,
-      0x0e40, 0x0e4e,
-      0x0e50, 0x0e59,
-      0x0e81, 0x0e82,
-      0x0e84, 0x0e84,
-      0x0e87, 0x0e88,
-      0x0e8a, 0x0e8a,
-      0x0e8d, 0x0e8d,
-      0x0e94, 0x0e97,
-      0x0e99, 0x0e9f,
-      0x0ea1, 0x0ea3,
-      0x0ea5, 0x0ea5,
-      0x0ea7, 0x0ea7,
-      0x0eaa, 0x0eab,
-      0x0ead, 0x0eb9,
-      0x0ebb, 0x0ebd,
-      0x0ec0, 0x0ec4,
-      0x0ec6, 0x0ec6,
-      0x0ec8, 0x0ecd,
-      0x0ed0, 0x0ed9,
-      0x0edc, 0x0edd,
-      0x0f00, 0x0f00,
-      0x0f18, 0x0f19,
-      0x0f20, 0x0f29,
-      0x0f35, 0x0f35,
-      0x0f37, 0x0f37,
-      0x0f39, 0x0f39,
-      0x0f3e, 0x0f47,
-      0x0f49, 0x0f6a,
-      0x0f71, 0x0f84,
-      0x0f86, 0x0f8b,
-      0x0f90, 0x0f97,
-      0x0f99, 0x0fbc,
-      0x0fc6, 0x0fc6,
-      0x1000, 0x1021,
-      0x1023, 0x1027,
-      0x1029, 0x102a,
-      0x102c, 0x1032,
-      0x1036, 0x1039,
-      0x1040, 0x1049,
-      0x1050, 0x1059,
-      0x10a0, 0x10c5,
-      0x10d0, 0x10fa,
-      0x10fc, 0x10fc,
-      0x1100, 0x1159,
-      0x115f, 0x11a2,
-      0x11a8, 0x11f9,
-      0x1200, 0x1248,
-      0x124a, 0x124d,
-      0x1250, 0x1256,
-      0x1258, 0x1258,
-      0x125a, 0x125d,
-      0x1260, 0x1288,
-      0x128a, 0x128d,
-      0x1290, 0x12b0,
-      0x12b2, 0x12b5,
-      0x12b8, 0x12be,
-      0x12c0, 0x12c0,
-      0x12c2, 0x12c5,
-      0x12c8, 0x12d6,
-      0x12d8, 0x1310,
-      0x1312, 0x1315,
-      0x1318, 0x135a,
-      0x135f, 0x135f,
-      0x1380, 0x138f,
-      0x13a0, 0x13f4,
-      0x1401, 0x166c,
-      0x166f, 0x1676,
-      0x1681, 0x169a,
-      0x16a0, 0x16ea,
-      0x1700, 0x170c,
-      0x170e, 0x1714,
-      0x1720, 0x1734,
-      0x1740, 0x1753,
-      0x1760, 0x176c,
-      0x176e, 0x1770,
-      0x1772, 0x1773,
-      0x1780, 0x17b3,
-      0x17b6, 0x17d3,
-      0x17d7, 0x17d7,
-      0x17dc, 0x17dd,
-      0x17e0, 0x17e9,
-      0x180b, 0x180d,
-      0x1810, 0x1819,
-      0x1820, 0x1877,
-      0x1880, 0x18a9,
-      0x1900, 0x191c,
-      0x1920, 0x192b,
-      0x1930, 0x193b,
-      0x1946, 0x196d,
-      0x1970, 0x1974,
-      0x1980, 0x19a9,
-      0x19b0, 0x19c9,
-      0x19d0, 0x19d9,
-      0x1a00, 0x1a1b,
-      0x1d00, 0x1dc3,
-      0x1e00, 0x1e9b,
-      0x1ea0, 0x1ef9,
-      0x1f00, 0x1f15,
-      0x1f18, 0x1f1d,
-      0x1f20, 0x1f45,
-      0x1f48, 0x1f4d,
-      0x1f50, 0x1f57,
-      0x1f59, 0x1f59,
-      0x1f5b, 0x1f5b,
-      0x1f5d, 0x1f5d,
-      0x1f5f, 0x1f7d,
-      0x1f80, 0x1fb4,
-      0x1fb6, 0x1fbc,
-      0x1fbe, 0x1fbe,
-      0x1fc2, 0x1fc4,
-      0x1fc6, 0x1fcc,
-      0x1fd0, 0x1fd3,
-      0x1fd6, 0x1fdb,
-      0x1fe0, 0x1fec,
-      0x1ff2, 0x1ff4,
-      0x1ff6, 0x1ffc,
-      0x2071, 0x2071,
-      0x207f, 0x207f,
-      0x2090, 0x2094,
-      0x20d0, 0x20eb,
-      0x2102, 0x2102,
-      0x2107, 0x2107,
-      0x210a, 0x2113,
-      0x2115, 0x2115,
-      0x2119, 0x211d,
-      0x2124, 0x2124,
-      0x2126, 0x2126,
-      0x2128, 0x2128,
-      0x212a, 0x212d,
-      0x212f, 0x2131,
-      0x2133, 0x2139,
-      0x213c, 0x213f,
-      0x2145, 0x2149,
-      0x2c00, 0x2c2e,
-      0x2c30, 0x2c5e,
-      0x2c80, 0x2ce4,
-      0x2d00, 0x2d25,
-      0x2d30, 0x2d65,
-      0x2d6f, 0x2d6f,
-      0x2d80, 0x2d96,
-      0x2da0, 0x2da6,
-      0x2da8, 0x2dae,
-      0x2db0, 0x2db6,
-      0x2db8, 0x2dbe,
-      0x2dc0, 0x2dc6,
-      0x2dc8, 0x2dce,
-      0x2dd0, 0x2dd6,
-      0x2dd8, 0x2dde,
-      0x3005, 0x3006,
-      0x302a, 0x302f,
-      0x3031, 0x3035,
-      0x303b, 0x303c,
-      0x3041, 0x3096,
-      0x3099, 0x309a,
-      0x309d, 0x309f,
-      0x30a1, 0x30fa,
-      0x30fc, 0x30ff,
-      0x3105, 0x312c,
-      0x3131, 0x318e,
-      0x31a0, 0x31b7,
-      0x31f0, 0x31ff,
-      0x3400, 0x4db5,
-      0x4e00, 0x9fbb,
-      0xa000, 0xa48c,
-      0xa800, 0xa827,
-      0xac00, 0xd7a3,
-      0xf900, 0xfa2d,
-      0xfa30, 0xfa6a,
-      0xfa70, 0xfad9,
-      0xfb00, 0xfb06,
-      0xfb13, 0xfb17,
-      0xfb1d, 0xfb28,
-      0xfb2a, 0xfb36,
-      0xfb38, 0xfb3c,
-      0xfb3e, 0xfb3e,
-      0xfb40, 0xfb41,
-      0xfb43, 0xfb44,
-      0xfb46, 0xfbb1,
-      0xfbd3, 0xfd3d,
-      0xfd50, 0xfd8f,
-      0xfd92, 0xfdc7,
-      0xfdf0, 0xfdfb,
-      0xfe00, 0xfe0f,
-      0xfe20, 0xfe23,
-      0xfe70, 0xfe74,
-      0xfe76, 0xfefc,
-      0xff10, 0xff19,
-      0xff21, 0xff3a,
-      0xff41, 0xff5a,
-      0xff66, 0xffbe,
-      0xffc2, 0xffc7,
-      0xffca, 0xffcf,
-      0xffd2, 0xffd7,
-      0xffda, 0xffdc,
-      0x10000, 0x1000b,
-      0x1000d, 0x10026,
-      0x10028, 0x1003a,
-      0x1003c, 0x1003d,
-      0x1003f, 0x1004d,
-      0x10050, 0x1005d,
-      0x10080, 0x100fa,
-      0x10300, 0x1031e,
-      0x10330, 0x10349,
-      0x10380, 0x1039d,
-      0x103a0, 0x103c3,
-      0x103c8, 0x103cf,
-      0x10400, 0x1049d,
-      0x104a0, 0x104a9,
-      0x10800, 0x10805,
-      0x10808, 0x10808,
-      0x1080a, 0x10835,
-      0x10837, 0x10838,
-      0x1083c, 0x1083c,
-      0x1083f, 0x1083f,
-      0x10a00, 0x10a03,
-      0x10a05, 0x10a06,
-      0x10a0c, 0x10a13,
-      0x10a15, 0x10a17,
-      0x10a19, 0x10a33,
-      0x10a38, 0x10a3a,
-      0x10a3f, 0x10a3f,
-      0x1d165, 0x1d169,
-      0x1d16d, 0x1d172,
-      0x1d17b, 0x1d182,
-      0x1d185, 0x1d18b,
-      0x1d1aa, 0x1d1ad,
-      0x1d242, 0x1d244,
-      0x1d400, 0x1d454,
-      0x1d456, 0x1d49c,
-      0x1d49e, 0x1d49f,
-      0x1d4a2, 0x1d4a2,
-      0x1d4a5, 0x1d4a6,
-      0x1d4a9, 0x1d4ac,
-      0x1d4ae, 0x1d4b9,
-      0x1d4bb, 0x1d4bb,
-      0x1d4bd, 0x1d4c3,
-      0x1d4c5, 0x1d505,
-      0x1d507, 0x1d50a,
-      0x1d50d, 0x1d514,
-      0x1d516, 0x1d51c,
-      0x1d51e, 0x1d539,
-      0x1d53b, 0x1d53e,
-      0x1d540, 0x1d544,
-      0x1d546, 0x1d546,
-      0x1d54a, 0x1d550,
-      0x1d552, 0x1d6a5,
-      0x1d6a8, 0x1d6c0,
-      0x1d6c2, 0x1d6da,
-      0x1d6dc, 0x1d6fa,
-      0x1d6fc, 0x1d714,
-      0x1d716, 0x1d734,
-      0x1d736, 0x1d74e,
-      0x1d750, 0x1d76e,
-      0x1d770, 0x1d788,
-      0x1d78a, 0x1d7a8,
-      0x1d7aa, 0x1d7c2,
-      0x1d7c4, 0x1d7c9,
-      0x1d7ce, 0x1d7ff,
-      0x20000, 0x2a6d6,
-      0x2f800, 0x2fa1d,
-      0xe0100, 0xe01ef
-    }; /* CR_Alnum */
-
-    /* 'ASCII': [[:ASCII:]] */
-    private static final int CR_ASCII[] = {
-      1,
-      0x0000, 0x007f
-    }; /* CR_ASCII */
-
-    static final int[][]CodeRangeTable = Config.USE_UNICODE_PROPERTIES ?
-            new int[][] {
-                UnicodeCodeRanges.CR_NEWLINE,
-                UnicodeCodeRanges.CR_Alpha,
-                UnicodeCodeRanges.CR_Blank,
-                UnicodeCodeRanges.CR_Cntrl,
-                UnicodeCodeRanges.CR_Digit,
-                UnicodeCodeRanges.CR_Graph,
-                UnicodeCodeRanges.CR_Lower,
-                UnicodeCodeRanges.CR_Print,
-                UnicodeCodeRanges.CR_Punct,
-                UnicodeCodeRanges.CR_Space,
-                UnicodeCodeRanges.CR_Upper,
-                UnicodeCodeRanges.CR_XDigit,
-                UnicodeCodeRanges.CR_Word,
-                UnicodeCodeRanges.CR_Alnum,
-                UnicodeCodeRanges.CR_ASCII,
-
-                // unicode properties
-                UnicodeProperties.CR_Any,
-                UnicodeProperties.CR_Assigned,
-                UnicodeProperties.CR_C,
-                UnicodeProperties.CR_Cc,
-                UnicodeProperties.CR_Cf,
-                UnicodeProperties.CR_Cn,
-                UnicodeProperties.CR_Co,
-                UnicodeProperties.CR_Cs,
-                UnicodeProperties.CR_L,
-                UnicodeProperties.CR_Ll,
-                UnicodeProperties.CR_Lm,
-                UnicodeProperties.CR_Lo,
-                UnicodeProperties.CR_Lt,
-                UnicodeProperties.CR_Lu,
-                UnicodeProperties.CR_M,
-                UnicodeProperties.CR_Mc,
-                UnicodeProperties.CR_Me,
-                UnicodeProperties.CR_Mn,
-                UnicodeProperties.CR_N,
-                UnicodeProperties.CR_Nd,
-                UnicodeProperties.CR_Nl,
-                UnicodeProperties.CR_No,
-                UnicodeProperties.CR_P,
-                UnicodeProperties.CR_Pc,
-                UnicodeProperties.CR_Pd,
-                UnicodeProperties.CR_Pe,
-                UnicodeProperties.CR_Pf,
-                UnicodeProperties.CR_Pi,
-                UnicodeProperties.CR_Po,
-                UnicodeProperties.CR_Ps,
-                UnicodeProperties.CR_S,
-                UnicodeProperties.CR_Sc,
-                UnicodeProperties.CR_Sk,
-                UnicodeProperties.CR_Sm,
-                UnicodeProperties.CR_So,
-                UnicodeProperties.CR_Z,
-                UnicodeProperties.CR_Zl,
-                UnicodeProperties.CR_Zp,
-                UnicodeProperties.CR_Zs,
-                UnicodePropertiesScripts.CR_Arabic,
-                UnicodePropertiesScripts.CR_Armenian,
-                UnicodePropertiesScripts.CR_Bengali,
-                UnicodePropertiesScripts.CR_Bopomofo,
-                UnicodePropertiesScripts.CR_Braille,
-                UnicodePropertiesScripts.CR_Buginese,
-                UnicodePropertiesScripts.CR_Buhid,
-                UnicodePropertiesScripts.CR_Canadian_Aboriginal,
-                UnicodePropertiesScripts.CR_Cherokee,
-                UnicodePropertiesScripts.CR_Common,
-                UnicodePropertiesScripts.CR_Coptic,
-                UnicodePropertiesScripts.CR_Cypriot,
-                UnicodePropertiesScripts.CR_Cyrillic,
-                UnicodePropertiesScripts.CR_Deseret,
-                UnicodePropertiesScripts.CR_Devanagari,
-                UnicodePropertiesScripts.CR_Ethiopic,
-                UnicodePropertiesScripts.CR_Georgian,
-                UnicodePropertiesScripts.CR_Glagolitic,
-                UnicodePropertiesScripts.CR_Gothic,
-                UnicodePropertiesScripts.CR_Greek,
-                UnicodePropertiesScripts.CR_Gujarati,
-                UnicodePropertiesScripts.CR_Gurmukhi,
-                UnicodePropertiesScripts.CR_Han,
-                UnicodePropertiesScripts.CR_Hangul,
-                UnicodePropertiesScripts.CR_Hanunoo,
-                UnicodePropertiesScripts.CR_Hebrew,
-                UnicodePropertiesScripts.CR_Hiragana,
-                UnicodePropertiesScripts.CR_Inherited,
-                UnicodePropertiesScripts.CR_Kannada,
-                UnicodePropertiesScripts.CR_Katakana,
-                UnicodePropertiesScripts.CR_Kharoshthi,
-                UnicodePropertiesScripts.CR_Khmer,
-                UnicodePropertiesScripts.CR_Lao,
-                UnicodePropertiesScripts.CR_Latin,
-                UnicodePropertiesScripts.CR_Limbu,
-                UnicodePropertiesScripts.CR_Linear_B,
-                UnicodePropertiesScripts.CR_Malayalam,
-                UnicodePropertiesScripts.CR_Mongolian,
-                UnicodePropertiesScripts.CR_Myanmar,
-                UnicodePropertiesScripts.CR_New_Tai_Lue,
-                UnicodePropertiesScripts.CR_Ogham,
-                UnicodePropertiesScripts.CR_Old_Italic,
-                UnicodePropertiesScripts.CR_Old_Persian,
-                UnicodePropertiesScripts.CR_Oriya,
-                UnicodePropertiesScripts.CR_Osmanya,
-                UnicodePropertiesScripts.CR_Runic,
-                UnicodePropertiesScripts.CR_Shavian,
-                UnicodePropertiesScripts.CR_Sinhala,
-                UnicodePropertiesScripts.CR_Syloti_Nagri,
-                UnicodePropertiesScripts.CR_Syriac,
-                UnicodePropertiesScripts.CR_Tagalog,
-                UnicodePropertiesScripts.CR_Tagbanwa,
-                UnicodePropertiesScripts.CR_Tai_Le,
-                UnicodePropertiesScripts.CR_Tamil,
-                UnicodePropertiesScripts.CR_Telugu,
-                UnicodePropertiesScripts.CR_Thaana,
-                UnicodePropertiesScripts.CR_Thai,
-                UnicodePropertiesScripts.CR_Tibetan,
-                UnicodePropertiesScripts.CR_Tifinagh,
-                UnicodePropertiesScripts.CR_Ugaritic,
-                UnicodePropertiesScripts.CR_Yi,
-            } :
-            new int[][] {
-                UnicodeCodeRanges.CR_NEWLINE,
-                UnicodeCodeRanges.CR_Alpha,
-                UnicodeCodeRanges.CR_Blank,
-                UnicodeCodeRanges.CR_Cntrl,
-                UnicodeCodeRanges.CR_Digit,
-                UnicodeCodeRanges.CR_Graph,
-                UnicodeCodeRanges.CR_Lower,
-                UnicodeCodeRanges.CR_Print,
-                UnicodeCodeRanges.CR_Punct,
-                UnicodeCodeRanges.CR_Space,
-                UnicodeCodeRanges.CR_Upper,
-                UnicodeCodeRanges.CR_XDigit,
-                UnicodeCodeRanges.CR_Word,
-                UnicodeCodeRanges.CR_Alnum,
-                UnicodeCodeRanges.CR_ASCII,
-           };
-}
\ No newline at end of file
diff --git a/src/org/joni/encoding/unicode/UnicodeEncoding.java b/src/org/joni/encoding/unicode/UnicodeEncoding.java
deleted file mode 100644
index 095488b..0000000
--- a/src/org/joni/encoding/unicode/UnicodeEncoding.java
+++ /dev/null
@@ -1,439 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.unicode;
-
-import org.joni.ApplyAllCaseFoldFunction;
-import org.joni.CaseFoldCodeItem;
-import org.joni.CodeRangeBuffer;
-import org.joni.Config;
-import org.joni.IntHolder;
-import org.joni.constants.CharacterType;
-import org.joni.encoding.MultiByteEncoding;
-import org.joni.exception.ErrorMessages;
-import org.joni.exception.ValueException;
-
-
-public abstract class UnicodeEncoding extends MultiByteEncoding {
-    private static final int PROPERTY_NAME_MAX_SIZE = 20;
-
-    protected UnicodeEncoding(int minLength, int maxLength, int[]EncLen) {
-        // ASCII type tables for all Unicode encodings
-        super(minLength, maxLength, EncLen, null, UNICODE_ISO_8859_1_CTypeTable);
-    }
-
-    protected UnicodeEncoding(int minLength, int maxLength, int[]EncLen, int[][]Trans) {
-        // ASCII type tables for all Unicode encodings        
-        super(minLength, maxLength, EncLen, Trans, UNICODE_ISO_8859_1_CTypeTable);
-    }
-
-    // onigenc_unicode_is_code_ctype
-    @Override
-    public final boolean isCodeCType(int code, int ctype) {
-        if (Config.USE_UNICODE_PROPERTIES) {
-            if (ctype <= CharacterType.MAX_STD_CTYPE && code < 256)
-                return isCodeCTypeInternal(code, ctype); 
-        } else {
-            if (code < 256) return isCodeCTypeInternal(code, ctype);
-        }
-
-        if (ctype > UnicodeCodeRanges.CodeRangeTable.length) throw new InternalError(ErrorMessages.ERR_TYPE_BUG);
-
-        return CodeRangeBuffer.isInCodeRange(UnicodeCodeRanges.CodeRangeTable[ctype], code);
-        
-    }
-    
-    // onigenc_unicode_ctype_code_range
-    protected final int[]ctypeCodeRange(int ctype) {
-        if (ctype >= UnicodeCodeRanges.CodeRangeTable.length) throw new InternalError(ErrorMessages.ERR_TYPE_BUG);
-        
-        return UnicodeCodeRanges.CodeRangeTable[ctype];
-    }
-    
-    // onigenc_unicode_property_name_to_ctype
-    @Override
-    public int propertyNameToCType(byte[]name, int p, int end) {
-        byte[]buf = new byte[PROPERTY_NAME_MAX_SIZE];
-        
-        int p_ = p;
-        int len = 0;
-        
-        while(p_ < end) {
-            int code = mbcToCode(name, p_, end);
-            if (code >= 0x80) throw new ValueException(ErrorMessages.ERR_INVALID_CHAR_PROPERTY_NAME);
-            buf[len++] = (byte)code;
-            if (len >= PROPERTY_NAME_MAX_SIZE) throw new ValueException(ErrorMessages.ERR_INVALID_CHAR_PROPERTY_NAME, name, p, end);
-            p_ += length(name, p_, end);
-        }
-
-        Integer ctype = UnicodeCTypeNames.CTypeNameHash.get(buf, 0, len);
-        if (ctype == null) throw new ValueException(ErrorMessages.ERR_INVALID_CHAR_PROPERTY_NAME, name, p, end);
-        return ctype;       
-    }
-    
-    // onigenc_unicode_mbc_case_fold
-    @Override
-    public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]fold) {
-        int p = pp.value;
-        int foldP = 0;
-        
-        int code = mbcToCode(bytes, p, end);
-        int len = length(bytes, p, end);
-        pp.value += len;
-        
-        if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI) {
-            if ((flag & Config.ENC_CASE_FOLD_TURKISH_AZERI) != 0) {
-                if (code == 0x0049) {
-                    return codeToMbc(0x0131, fold, foldP);
-                } else if (code == 0x0130) {
-                    return codeToMbc(0x0069, fold, foldP);
-                }
-            }
-        }
-        
-        int to[] = UnicodeCaseFolds.FoldHash.get(code);
-        if (to != null) {
-            if (to.length == 1) {
-                return codeToMbc(to[0], fold, foldP);
-            } else {
-                int rlen = 0;
-                for (int i=0; i<to.length; i++) {
-                    len = codeToMbc(to[i], fold, foldP); 
-                    foldP += len;
-                    rlen += len;
-                }
-                return rlen;
-            }
-        }
-
-        for (int i=0; i<len; i++) {
-            fold[foldP++] = bytes[p++];
-        }
-        return len;
-    }
-    
-    // onigenc_unicode_apply_all_case_fold
-    @Override
-    public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) {
-        /* if (CaseFoldInited == 0) init_case_fold_table(); */      
-
-        int[]code = new int[]{0};
-        for (int i=0; i<UnicodeCaseFolds.CaseUnfold_11_From.length; i++) {
-            int from = UnicodeCaseFolds.CaseUnfold_11_From[i];
-            int[]to = UnicodeCaseFolds.CaseUnfold_11_To[i];
-            
-            for (int j=0; j<to.length; j++) {
-                code[0] = from;
-                fun.apply(to[j], code, 1, arg);
-                
-                code[0] = to[j];
-                fun.apply(from, code, 1, arg);
-                
-                for (int k=0; k<j; k++) {
-                    code[0] = to[k];
-                    fun.apply(to[j], code, 1, arg);
-                    
-                    code[0] = to[j];
-                    fun.apply(to[k], code, 1, arg);
-                }
-                
-            }
-        }
-        
-        if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI && (flag & Config.ENC_CASE_FOLD_TURKISH_AZERI) != 0) {
-            code[0] = 0x0131;
-            fun.apply(0x0049, code, 1, arg);
-            code[0] = 0x0049;
-            fun.apply(0x0131, code, 1, arg);
-            code[0] = 0x0130;
-            fun.apply(0x0069, code, 1, arg);
-            code[0] = 0x0069;
-            fun.apply(0x0130, code, 1, arg);
-        } else {
-            for (int i=0; i<UnicodeCaseFolds.CaseUnfold_11_Locale_From.length; i++) {
-                int from = UnicodeCaseFolds.CaseUnfold_11_Locale_From[i];
-                int[]to = UnicodeCaseFolds.CaseUnfold_11_Locale_To[i];
-            
-                for (int j=0; j<to.length; j++) {
-                    code[0] = from;
-                    fun.apply(to[j], code, 1, arg);
-                
-                    code[0] = to[j];
-                    fun.apply(from, code, 1, arg);
-                
-                    for (int k = 0; k<j; k++) {
-                        code[0] = to[k];
-                        fun.apply(to[j], code, 1, arg);
-                    
-                        code[0] = to[j];
-                        fun.apply(to[k], code, 1, arg);
-                    }
-                }
-            }
-        } // USE_UNICODE_CASE_FOLD_TURKISH_AZERI
-        
-        if ((flag & Config.INTERNAL_ENC_CASE_FOLD_MULTI_CHAR) != 0) {
-            for (int i=0; i<UnicodeCaseFolds.CaseUnfold_12.length; i+=2) {
-                int[]from = UnicodeCaseFolds.CaseUnfold_12[i];
-                int[]to = UnicodeCaseFolds.CaseUnfold_12[i + 1];
-                for (int j=0; j<to.length; j++) {
-                    fun.apply(to[j], from, 2, arg);
-                    
-                    for (int k=0; k<to.length; k++) {
-                        if (k == j) continue;
-                        code[0] = to[k];
-                        fun.apply(to[j], code, 1, arg);
-                    }
-                }
-            }
-
-            if (!Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI || (flag & Config.ENC_CASE_FOLD_TURKISH_AZERI) == 0) {
-                for (int i=0; i<UnicodeCaseFolds.CaseUnfold_12_Locale.length; i+=2) {
-                    int[]from = UnicodeCaseFolds.CaseUnfold_12_Locale[i];
-                    int[]to = UnicodeCaseFolds.CaseUnfold_12_Locale[i + 1];
-                    for (int j=0; j<to.length; j++) {
-                        fun.apply(to[j], from, 2, arg);
-
-                        for (int k=0; k<to.length; k++) {
-                            if (k == j) continue;
-                            code[0] = to[k];
-                            fun.apply(to[j], code, 1, arg);
-                        }
-                    }
-                }
-            } // !USE_UNICODE_CASE_FOLD_TURKISH_AZERI
-            
-            for (int i=0; i<UnicodeCaseFolds.CaseUnfold_13.length; i+=2) {
-                int[]from = UnicodeCaseFolds.CaseUnfold_13[i];
-                int[]to = UnicodeCaseFolds.CaseUnfold_13[i + 1];
-                
-                for (int j=0; j<to.length; j++) {
-                    fun.apply(to[j], from, 3, arg); //// ????
-                    
-                    for (int k=0; k<to.length; k++) {
-                        if (k == j) continue;
-                        code[0] = to[k];
-                        fun.apply(to[j], code, 1, arg);
-                    }
-                }
-            }
-            
-        } // INTERNAL_ENC_CASE_FOLD_MULTI_CHAR
-    }
-    
-    // onigenc_unicode_get_case_fold_codes_by_str
-    @Override
-    public CaseFoldCodeItem[]caseFoldCodesByString(int flag, byte[]bytes, int p, int end) {
-        int code = mbcToCode(bytes, p, end);
-        int len = length(bytes, p, end);
-
-        if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI) {
-            if ((flag & Config.ENC_CASE_FOLD_TURKISH_AZERI) != 0) {
-                if (code == 0x0049) {
-                    return new CaseFoldCodeItem[]{new CaseFoldCodeItem(len, 1, new int[]{0x0131})};
-                } else if(code == 0x0130) {
-                    return new CaseFoldCodeItem[]{new CaseFoldCodeItem(len, 1, new int[]{0x0069})};                    
-                } else if(code == 0x0131) {
-                    return new CaseFoldCodeItem[]{new CaseFoldCodeItem(len, 1, new int[]{0x0049})};
-                } else if(code == 0x0069) {
-                    return new CaseFoldCodeItem[]{new CaseFoldCodeItem(len, 1, new int[]{0x0130})};
-                }
-            }
-        } // USE_UNICODE_CASE_FOLD_TURKISH_AZERI
-        
-        int n = 0;
-        int fn = 0;
-        
-        int[]to = UnicodeCaseFolds.FoldHash.get(code);
-        CaseFoldCodeItem[]items = null;
-        if (to != null) {
-            items = new CaseFoldCodeItem[Config.ENC_GET_CASE_FOLD_CODES_MAX_NUM];
-            
-            if (to.length == 1) {
-                int origCode = code;
-                
-                items[0] = new CaseFoldCodeItem(len, 1, new int[]{to[0]});
-                n++;
-                
-                code = to[0];
-                to = UnicodeCaseFolds.Unfold1Hash.get(code);
-                if (to != null) {
-                    for (int i=0; i<to.length; i++) {
-                        if (to[i] != origCode) {
-                            items[n] = new CaseFoldCodeItem(len, 1, new int[]{to[i]});
-                            n++;
-                        }
-                    }
-                }
-            } else if ((flag & Config.INTERNAL_ENC_CASE_FOLD_MULTI_CHAR) != 0) {
-                int[][]cs = new int[3][4];
-                int[]ncs = new int[3];
-                
-                for (fn=0; fn<to.length; fn++) {
-                    cs[fn][0] = to[fn];
-                    int[]z3 = UnicodeCaseFolds.Unfold1Hash.get(cs[fn][0]);
-                    if (z3 != null) {
-                        for (int i=0; i<z3.length; i++) {
-                            cs[fn][i+1] = z3[i];
-                        }
-                        ncs[fn] = z3.length + 1;
-                    } else {
-                        ncs[fn] = 1;
-                    }
-                }
-
-                if (fn == 2) {
-                    for (int i=0; i<ncs[0]; i++) {
-                        for (int j=0; j<ncs[1]; j++) {
-                            items[n] = new CaseFoldCodeItem(len, 2, new int[]{cs[0][i], cs[1][j]});
-                            n++;
-                        }
-                    }
-                        
-                    int[]z2 = UnicodeCaseFolds.Unfold2Hash.get(to);
-                    if (z2 != null) {
-                        for (int i=0; i<z2.length; i++) {
-                            if (z2[i] == code) continue;
-                            items[n] = new CaseFoldCodeItem(len, 1, new int[]{z2[i]});
-                            n++;                                
-                        }
-                    }
-                } else {
-                    for (int i=0; i<ncs[0]; i++) {
-                        for (int j=0; j<ncs[1]; j++) {
-                            for (int k=0; k<ncs[2]; k++) {
-                                items[n] = new CaseFoldCodeItem(len, 3, new int[]{cs[0][i], cs[1][j], cs[2][k]});
-                                n++;
-                            }
-                        }
-                    }
-                    int[]z2 = UnicodeCaseFolds.Unfold3Hash.get(to);
-                    if (z2 != null) {
-                        for (int i=0; i<z2.length; i++) {
-                            if (z2[i] == code) continue;
-                            items[n] = new CaseFoldCodeItem(len, 1, new int[]{z2[i]});    
-                            n++;
-                        }
-                    }
-                }
-                /* multi char folded code is not head of another folded multi char */
-                flag = 0; /* DISABLE_CASE_FOLD_MULTI_CHAR(flag); */
-            }
-        } else {
-            to = UnicodeCaseFolds.Unfold1Hash.get(code);
-            if (to != null) {
-                items = new CaseFoldCodeItem[Config.ENC_GET_CASE_FOLD_CODES_MAX_NUM];
-                for (int i=0; i<to.length; i++) {
-                    items[n] = new CaseFoldCodeItem(len, 1, new int[]{to[i]});
-                    n++;
-                }
-            }
-        }
-        
-        if ((flag & Config.INTERNAL_ENC_CASE_FOLD_MULTI_CHAR) != 0) {
-            if (items == null) items = new CaseFoldCodeItem[Config.ENC_GET_CASE_FOLD_CODES_MAX_NUM];
-            
-            p += len;
-            if (p < end) {                
-                int[]codes = new int[3];
-                codes[0] = code;
-                code = mbcToCode(bytes, p, end);
-                to = UnicodeCaseFolds.FoldHash.get(code);
-                if (to != null && to.length == 1) {
-                    codes[1] = to[0]; 
-                } else {
-                    codes[1] = code;
-                }
-                    
-                int clen = length(bytes, p, end);
-                len += clen;
-                int[]z2 = UnicodeCaseFolds.Unfold2Hash.get(codes);
-                if (z2 != null) {
-                    for (int i=0; i<z2.length; i++) {
-                        items[n] = new CaseFoldCodeItem(len, 1, new int[]{z2[i]});
-                        n++;
-                    }
-                }
-                p += clen;
-                if (p < end) {
-                    code = mbcToCode(bytes, p, end);
-                    to = UnicodeCaseFolds.FoldHash.get(code);
-                    if (to != null && to.length == 1) {
-                        codes[2] = to[0];
-                    } else {
-                        codes[2] = code;
-                    }
-                    clen = length(bytes, p, end);
-                    len += clen;
-                    z2 = UnicodeCaseFolds.Unfold3Hash.get(codes);
-                    if (z2 != null) {
-                        for (int i=0; i<z2.length; i++) {
-                            items[n] = new CaseFoldCodeItem(len, 1, new int[]{z2[i]});
-                            n++;
-                        }
-                    }
-                }
-            }
-        }
-        
-        if (items == null || n == 0) return EMPTY_FOLD_CODES;
-        if (n < items.length) {
-            CaseFoldCodeItem [] tmp = new CaseFoldCodeItem[n];
-            System.arraycopy(items, 0, tmp, 0, n);
-            return tmp;
-        } else {
-            return items;
-        }
-    }
-    
-    static final short UNICODE_ISO_8859_1_CTypeTable[] = {
-          0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-          0x4008, 0x428c, 0x4289, 0x4288, 0x4288, 0x4288, 0x4008, 0x4008,
-          0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-          0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
-          0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-          0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-          0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
-          0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
-          0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
-          0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-          0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
-          0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
-          0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
-          0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-          0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
-          0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
-          0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0288, 0x0008, 0x0008,
-          0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-          0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-          0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-          0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
-          0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x00a8, 0x00a0, 0x00a0,
-          0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0,
-          0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0,
-          0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-          0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
-          0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0,
-          0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2,
-          0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-          0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
-          0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0,
-          0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2
-    };      
-}
diff --git a/src/org/joni/encoding/unicode/UnicodeProperties.java b/src/org/joni/encoding/unicode/UnicodeProperties.java
deleted file mode 100644
index 3a3a3b9..0000000
--- a/src/org/joni/encoding/unicode/UnicodeProperties.java
+++ /dev/null
@@ -1,4272 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.unicode;
-
-import org.joni.Config;
-
-public interface UnicodeProperties {
-    // #ifdef USE_UNICODE_PROPERTIES
-
-    /* 'Any': - */
-    static final int CR_Any[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      1,
-      0x0000, 0x10ffff
-    } : null; /* CR_Any */
-
-    /* 'Assigned': - */
-    static final int CR_Assigned[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      420,
-      0x0000, 0x0241,
-      0x0250, 0x036f,
-      0x0374, 0x0375,
-      0x037a, 0x037a,
-      0x037e, 0x037e,
-      0x0384, 0x038a,
-      0x038c, 0x038c,
-      0x038e, 0x03a1,
-      0x03a3, 0x03ce,
-      0x03d0, 0x0486,
-      0x0488, 0x04ce,
-      0x04d0, 0x04f9,
-      0x0500, 0x050f,
-      0x0531, 0x0556,
-      0x0559, 0x055f,
-      0x0561, 0x0587,
-      0x0589, 0x058a,
-      0x0591, 0x05b9,
-      0x05bb, 0x05c7,
-      0x05d0, 0x05ea,
-      0x05f0, 0x05f4,
-      0x0600, 0x0603,
-      0x060b, 0x0615,
-      0x061b, 0x061b,
-      0x061e, 0x061f,
-      0x0621, 0x063a,
-      0x0640, 0x065e,
-      0x0660, 0x070d,
-      0x070f, 0x074a,
-      0x074d, 0x076d,
-      0x0780, 0x07b1,
-      0x0901, 0x0939,
-      0x093c, 0x094d,
-      0x0950, 0x0954,
-      0x0958, 0x0970,
-      0x097d, 0x097d,
-      0x0981, 0x0983,
-      0x0985, 0x098c,
-      0x098f, 0x0990,
-      0x0993, 0x09a8,
-      0x09aa, 0x09b0,
-      0x09b2, 0x09b2,
-      0x09b6, 0x09b9,
-      0x09bc, 0x09c4,
-      0x09c7, 0x09c8,
-      0x09cb, 0x09ce,
-      0x09d7, 0x09d7,
-      0x09dc, 0x09dd,
-      0x09df, 0x09e3,
-      0x09e6, 0x09fa,
-      0x0a01, 0x0a03,
-      0x0a05, 0x0a0a,
-      0x0a0f, 0x0a10,
-      0x0a13, 0x0a28,
-      0x0a2a, 0x0a30,
-      0x0a32, 0x0a33,
-      0x0a35, 0x0a36,
-      0x0a38, 0x0a39,
-      0x0a3c, 0x0a3c,
-      0x0a3e, 0x0a42,
-      0x0a47, 0x0a48,
-      0x0a4b, 0x0a4d,
-      0x0a59, 0x0a5c,
-      0x0a5e, 0x0a5e,
-      0x0a66, 0x0a74,
-      0x0a81, 0x0a83,
-      0x0a85, 0x0a8d,
-      0x0a8f, 0x0a91,
-      0x0a93, 0x0aa8,
-      0x0aaa, 0x0ab0,
-      0x0ab2, 0x0ab3,
-      0x0ab5, 0x0ab9,
-      0x0abc, 0x0ac5,
-      0x0ac7, 0x0ac9,
-      0x0acb, 0x0acd,
-      0x0ad0, 0x0ad0,
-      0x0ae0, 0x0ae3,
-      0x0ae6, 0x0aef,
-      0x0af1, 0x0af1,
-      0x0b01, 0x0b03,
-      0x0b05, 0x0b0c,
-      0x0b0f, 0x0b10,
-      0x0b13, 0x0b28,
-      0x0b2a, 0x0b30,
-      0x0b32, 0x0b33,
-      0x0b35, 0x0b39,
-      0x0b3c, 0x0b43,
-      0x0b47, 0x0b48,
-      0x0b4b, 0x0b4d,
-      0x0b56, 0x0b57,
-      0x0b5c, 0x0b5d,
-      0x0b5f, 0x0b61,
-      0x0b66, 0x0b71,
-      0x0b82, 0x0b83,
-      0x0b85, 0x0b8a,
-      0x0b8e, 0x0b90,
-      0x0b92, 0x0b95,
-      0x0b99, 0x0b9a,
-      0x0b9c, 0x0b9c,
-      0x0b9e, 0x0b9f,
-      0x0ba3, 0x0ba4,
-      0x0ba8, 0x0baa,
-      0x0bae, 0x0bb9,
-      0x0bbe, 0x0bc2,
-      0x0bc6, 0x0bc8,
-      0x0bca, 0x0bcd,
-      0x0bd7, 0x0bd7,
-      0x0be6, 0x0bfa,
-      0x0c01, 0x0c03,
-      0x0c05, 0x0c0c,
-      0x0c0e, 0x0c10,
-      0x0c12, 0x0c28,
-      0x0c2a, 0x0c33,
-      0x0c35, 0x0c39,
-      0x0c3e, 0x0c44,
-      0x0c46, 0x0c48,
-      0x0c4a, 0x0c4d,
-      0x0c55, 0x0c56,
-      0x0c60, 0x0c61,
-      0x0c66, 0x0c6f,
-      0x0c82, 0x0c83,
-      0x0c85, 0x0c8c,
-      0x0c8e, 0x0c90,
-      0x0c92, 0x0ca8,
-      0x0caa, 0x0cb3,
-      0x0cb5, 0x0cb9,
-      0x0cbc, 0x0cc4,
-      0x0cc6, 0x0cc8,
-      0x0cca, 0x0ccd,
-      0x0cd5, 0x0cd6,
-      0x0cde, 0x0cde,
-      0x0ce0, 0x0ce1,
-      0x0ce6, 0x0cef,
-      0x0d02, 0x0d03,
-      0x0d05, 0x0d0c,
-      0x0d0e, 0x0d10,
-      0x0d12, 0x0d28,
-      0x0d2a, 0x0d39,
-      0x0d3e, 0x0d43,
-      0x0d46, 0x0d48,
-      0x0d4a, 0x0d4d,
-      0x0d57, 0x0d57,
-      0x0d60, 0x0d61,
-      0x0d66, 0x0d6f,
-      0x0d82, 0x0d83,
-      0x0d85, 0x0d96,
-      0x0d9a, 0x0db1,
-      0x0db3, 0x0dbb,
-      0x0dbd, 0x0dbd,
-      0x0dc0, 0x0dc6,
-      0x0dca, 0x0dca,
-      0x0dcf, 0x0dd4,
-      0x0dd6, 0x0dd6,
-      0x0dd8, 0x0ddf,
-      0x0df2, 0x0df4,
-      0x0e01, 0x0e3a,
-      0x0e3f, 0x0e5b,
-      0x0e81, 0x0e82,
-      0x0e84, 0x0e84,
-      0x0e87, 0x0e88,
-      0x0e8a, 0x0e8a,
-      0x0e8d, 0x0e8d,
-      0x0e94, 0x0e97,
-      0x0e99, 0x0e9f,
-      0x0ea1, 0x0ea3,
-      0x0ea5, 0x0ea5,
-      0x0ea7, 0x0ea7,
-      0x0eaa, 0x0eab,
-      0x0ead, 0x0eb9,
-      0x0ebb, 0x0ebd,
-      0x0ec0, 0x0ec4,
-      0x0ec6, 0x0ec6,
-      0x0ec8, 0x0ecd,
-      0x0ed0, 0x0ed9,
-      0x0edc, 0x0edd,
-      0x0f00, 0x0f47,
-      0x0f49, 0x0f6a,
-      0x0f71, 0x0f8b,
-      0x0f90, 0x0f97,
-      0x0f99, 0x0fbc,
-      0x0fbe, 0x0fcc,
-      0x0fcf, 0x0fd1,
-      0x1000, 0x1021,
-      0x1023, 0x1027,
-      0x1029, 0x102a,
-      0x102c, 0x1032,
-      0x1036, 0x1039,
-      0x1040, 0x1059,
-      0x10a0, 0x10c5,
-      0x10d0, 0x10fc,
-      0x1100, 0x1159,
-      0x115f, 0x11a2,
-      0x11a8, 0x11f9,
-      0x1200, 0x1248,
-      0x124a, 0x124d,
-      0x1250, 0x1256,
-      0x1258, 0x1258,
-      0x125a, 0x125d,
-      0x1260, 0x1288,
-      0x128a, 0x128d,
-      0x1290, 0x12b0,
-      0x12b2, 0x12b5,
-      0x12b8, 0x12be,
-      0x12c0, 0x12c0,
-      0x12c2, 0x12c5,
-      0x12c8, 0x12d6,
-      0x12d8, 0x1310,
-      0x1312, 0x1315,
-      0x1318, 0x135a,
-      0x135f, 0x137c,
-      0x1380, 0x1399,
-      0x13a0, 0x13f4,
-      0x1401, 0x1676,
-      0x1680, 0x169c,
-      0x16a0, 0x16f0,
-      0x1700, 0x170c,
-      0x170e, 0x1714,
-      0x1720, 0x1736,
-      0x1740, 0x1753,
-      0x1760, 0x176c,
-      0x176e, 0x1770,
-      0x1772, 0x1773,
-      0x1780, 0x17dd,
-      0x17e0, 0x17e9,
-      0x17f0, 0x17f9,
-      0x1800, 0x180e,
-      0x1810, 0x1819,
-      0x1820, 0x1877,
-      0x1880, 0x18a9,
-      0x1900, 0x191c,
-      0x1920, 0x192b,
-      0x1930, 0x193b,
-      0x1940, 0x1940,
-      0x1944, 0x196d,
-      0x1970, 0x1974,
-      0x1980, 0x19a9,
-      0x19b0, 0x19c9,
-      0x19d0, 0x19d9,
-      0x19de, 0x1a1b,
-      0x1a1e, 0x1a1f,
-      0x1d00, 0x1dc3,
-      0x1e00, 0x1e9b,
-      0x1ea0, 0x1ef9,
-      0x1f00, 0x1f15,
-      0x1f18, 0x1f1d,
-      0x1f20, 0x1f45,
-      0x1f48, 0x1f4d,
-      0x1f50, 0x1f57,
-      0x1f59, 0x1f59,
-      0x1f5b, 0x1f5b,
-      0x1f5d, 0x1f5d,
-      0x1f5f, 0x1f7d,
-      0x1f80, 0x1fb4,
-      0x1fb6, 0x1fc4,
-      0x1fc6, 0x1fd3,
-      0x1fd6, 0x1fdb,
-      0x1fdd, 0x1fef,
-      0x1ff2, 0x1ff4,
-      0x1ff6, 0x1ffe,
-      0x2000, 0x2063,
-      0x206a, 0x2071,
-      0x2074, 0x208e,
-      0x2090, 0x2094,
-      0x20a0, 0x20b5,
-      0x20d0, 0x20eb,
-      0x2100, 0x214c,
-      0x2153, 0x2183,
-      0x2190, 0x23db,
-      0x2400, 0x2426,
-      0x2440, 0x244a,
-      0x2460, 0x269c,
-      0x26a0, 0x26b1,
-      0x2701, 0x2704,
-      0x2706, 0x2709,
-      0x270c, 0x2727,
-      0x2729, 0x274b,
-      0x274d, 0x274d,
-      0x274f, 0x2752,
-      0x2756, 0x2756,
-      0x2758, 0x275e,
-      0x2761, 0x2794,
-      0x2798, 0x27af,
-      0x27b1, 0x27be,
-      0x27c0, 0x27c6,
-      0x27d0, 0x27eb,
-      0x27f0, 0x2b13,
-      0x2c00, 0x2c2e,
-      0x2c30, 0x2c5e,
-      0x2c80, 0x2cea,
-      0x2cf9, 0x2d25,
-      0x2d30, 0x2d65,
-      0x2d6f, 0x2d6f,
-      0x2d80, 0x2d96,
-      0x2da0, 0x2da6,
-      0x2da8, 0x2dae,
-      0x2db0, 0x2db6,
-      0x2db8, 0x2dbe,
-      0x2dc0, 0x2dc6,
-      0x2dc8, 0x2dce,
-      0x2dd0, 0x2dd6,
-      0x2dd8, 0x2dde,
-      0x2e00, 0x2e17,
-      0x2e1c, 0x2e1d,
-      0x2e80, 0x2e99,
-      0x2e9b, 0x2ef3,
-      0x2f00, 0x2fd5,
-      0x2ff0, 0x2ffb,
-      0x3000, 0x303f,
-      0x3041, 0x3096,
-      0x3099, 0x30ff,
-      0x3105, 0x312c,
-      0x3131, 0x318e,
-      0x3190, 0x31b7,
-      0x31c0, 0x31cf,
-      0x31f0, 0x321e,
-      0x3220, 0x3243,
-      0x3250, 0x32fe,
-      0x3300, 0x4db5,
-      0x4dc0, 0x9fbb,
-      0xa000, 0xa48c,
-      0xa490, 0xa4c6,
-      0xa700, 0xa716,
-      0xa800, 0xa82b,
-      0xac00, 0xd7a3,
-      0xd800, 0xfa2d,
-      0xfa30, 0xfa6a,
-      0xfa70, 0xfad9,
-      0xfb00, 0xfb06,
-      0xfb13, 0xfb17,
-      0xfb1d, 0xfb36,
-      0xfb38, 0xfb3c,
-      0xfb3e, 0xfb3e,
-      0xfb40, 0xfb41,
-      0xfb43, 0xfb44,
-      0xfb46, 0xfbb1,
-      0xfbd3, 0xfd3f,
-      0xfd50, 0xfd8f,
-      0xfd92, 0xfdc7,
-      0xfdf0, 0xfdfd,
-      0xfe00, 0xfe19,
-      0xfe20, 0xfe23,
-      0xfe30, 0xfe52,
-      0xfe54, 0xfe66,
-      0xfe68, 0xfe6b,
-      0xfe70, 0xfe74,
-      0xfe76, 0xfefc,
-      0xfeff, 0xfeff,
-      0xff01, 0xffbe,
-      0xffc2, 0xffc7,
-      0xffca, 0xffcf,
-      0xffd2, 0xffd7,
-      0xffda, 0xffdc,
-      0xffe0, 0xffe6,
-      0xffe8, 0xffee,
-      0xfff9, 0xfffd,
-      0x10000, 0x1000b,
-      0x1000d, 0x10026,
-      0x10028, 0x1003a,
-      0x1003c, 0x1003d,
-      0x1003f, 0x1004d,
-      0x10050, 0x1005d,
-      0x10080, 0x100fa,
-      0x10100, 0x10102,
-      0x10107, 0x10133,
-      0x10137, 0x1018a,
-      0x10300, 0x1031e,
-      0x10320, 0x10323,
-      0x10330, 0x1034a,
-      0x10380, 0x1039d,
-      0x1039f, 0x103c3,
-      0x103c8, 0x103d5,
-      0x10400, 0x1049d,
-      0x104a0, 0x104a9,
-      0x10800, 0x10805,
-      0x10808, 0x10808,
-      0x1080a, 0x10835,
-      0x10837, 0x10838,
-      0x1083c, 0x1083c,
-      0x1083f, 0x1083f,
-      0x10a00, 0x10a03,
-      0x10a05, 0x10a06,
-      0x10a0c, 0x10a13,
-      0x10a15, 0x10a17,
-      0x10a19, 0x10a33,
-      0x10a38, 0x10a3a,
-      0x10a3f, 0x10a47,
-      0x10a50, 0x10a58,
-      0x1d000, 0x1d0f5,
-      0x1d100, 0x1d126,
-      0x1d12a, 0x1d1dd,
-      0x1d200, 0x1d245,
-      0x1d300, 0x1d356,
-      0x1d400, 0x1d454,
-      0x1d456, 0x1d49c,
-      0x1d49e, 0x1d49f,
-      0x1d4a2, 0x1d4a2,
-      0x1d4a5, 0x1d4a6,
-      0x1d4a9, 0x1d4ac,
-      0x1d4ae, 0x1d4b9,
-      0x1d4bb, 0x1d4bb,
-      0x1d4bd, 0x1d4c3,
-      0x1d4c5, 0x1d505,
-      0x1d507, 0x1d50a,
-      0x1d50d, 0x1d514,
-      0x1d516, 0x1d51c,
-      0x1d51e, 0x1d539,
-      0x1d53b, 0x1d53e,
-      0x1d540, 0x1d544,
-      0x1d546, 0x1d546,
-      0x1d54a, 0x1d550,
-      0x1d552, 0x1d6a5,
-      0x1d6a8, 0x1d7c9,
-      0x1d7ce, 0x1d7ff,
-      0x20000, 0x2a6d6,
-      0x2f800, 0x2fa1d,
-      0xe0001, 0xe0001,
-      0xe0020, 0xe007f,
-      0xe0100, 0xe01ef,
-      0xf0000, 0xffffd,
-      0x100000, 0x10fffd
-    } : null; /* CR_Assigned */
-
-    /* 'C': Major Category */
-    static final int CR_C[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      422,
-      0x0000, 0x001f,
-      0x007f, 0x009f,
-      0x00ad, 0x00ad,
-      0x0242, 0x024f,
-      0x0370, 0x0373,
-      0x0376, 0x0379,
-      0x037b, 0x037d,
-      0x037f, 0x0383,
-      0x038b, 0x038b,
-      0x038d, 0x038d,
-      0x03a2, 0x03a2,
-      0x03cf, 0x03cf,
-      0x0487, 0x0487,
-      0x04cf, 0x04cf,
-      0x04fa, 0x04ff,
-      0x0510, 0x0530,
-      0x0557, 0x0558,
-      0x0560, 0x0560,
-      0x0588, 0x0588,
-      0x058b, 0x0590,
-      0x05ba, 0x05ba,
-      0x05c8, 0x05cf,
-      0x05eb, 0x05ef,
-      0x05f5, 0x060a,
-      0x0616, 0x061a,
-      0x061c, 0x061d,
-      0x0620, 0x0620,
-      0x063b, 0x063f,
-      0x065f, 0x065f,
-      0x06dd, 0x06dd,
-      0x070e, 0x070f,
-      0x074b, 0x074c,
-      0x076e, 0x077f,
-      0x07b2, 0x0900,
-      0x093a, 0x093b,
-      0x094e, 0x094f,
-      0x0955, 0x0957,
-      0x0971, 0x097c,
-      0x097e, 0x0980,
-      0x0984, 0x0984,
-      0x098d, 0x098e,
-      0x0991, 0x0992,
-      0x09a9, 0x09a9,
-      0x09b1, 0x09b1,
-      0x09b3, 0x09b5,
-      0x09ba, 0x09bb,
-      0x09c5, 0x09c6,
-      0x09c9, 0x09ca,
-      0x09cf, 0x09d6,
-      0x09d8, 0x09db,
-      0x09de, 0x09de,
-      0x09e4, 0x09e5,
-      0x09fb, 0x0a00,
-      0x0a04, 0x0a04,
-      0x0a0b, 0x0a0e,
-      0x0a11, 0x0a12,
-      0x0a29, 0x0a29,
-      0x0a31, 0x0a31,
-      0x0a34, 0x0a34,
-      0x0a37, 0x0a37,
-      0x0a3a, 0x0a3b,
-      0x0a3d, 0x0a3d,
-      0x0a43, 0x0a46,
-      0x0a49, 0x0a4a,
-      0x0a4e, 0x0a58,
-      0x0a5d, 0x0a5d,
-      0x0a5f, 0x0a65,
-      0x0a75, 0x0a80,
-      0x0a84, 0x0a84,
-      0x0a8e, 0x0a8e,
-      0x0a92, 0x0a92,
-      0x0aa9, 0x0aa9,
-      0x0ab1, 0x0ab1,
-      0x0ab4, 0x0ab4,
-      0x0aba, 0x0abb,
-      0x0ac6, 0x0ac6,
-      0x0aca, 0x0aca,
-      0x0ace, 0x0acf,
-      0x0ad1, 0x0adf,
-      0x0ae4, 0x0ae5,
-      0x0af0, 0x0af0,
-      0x0af2, 0x0b00,
-      0x0b04, 0x0b04,
-      0x0b0d, 0x0b0e,
-      0x0b11, 0x0b12,
-      0x0b29, 0x0b29,
-      0x0b31, 0x0b31,
-      0x0b34, 0x0b34,
-      0x0b3a, 0x0b3b,
-      0x0b44, 0x0b46,
-      0x0b49, 0x0b4a,
-      0x0b4e, 0x0b55,
-      0x0b58, 0x0b5b,
-      0x0b5e, 0x0b5e,
-      0x0b62, 0x0b65,
-      0x0b72, 0x0b81,
-      0x0b84, 0x0b84,
-      0x0b8b, 0x0b8d,
-      0x0b91, 0x0b91,
-      0x0b96, 0x0b98,
-      0x0b9b, 0x0b9b,
-      0x0b9d, 0x0b9d,
-      0x0ba0, 0x0ba2,
-      0x0ba5, 0x0ba7,
-      0x0bab, 0x0bad,
-      0x0bba, 0x0bbd,
-      0x0bc3, 0x0bc5,
-      0x0bc9, 0x0bc9,
-      0x0bce, 0x0bd6,
-      0x0bd8, 0x0be5,
-      0x0bfb, 0x0c00,
-      0x0c04, 0x0c04,
-      0x0c0d, 0x0c0d,
-      0x0c11, 0x0c11,
-      0x0c29, 0x0c29,
-      0x0c34, 0x0c34,
-      0x0c3a, 0x0c3d,
-      0x0c45, 0x0c45,
-      0x0c49, 0x0c49,
-      0x0c4e, 0x0c54,
-      0x0c57, 0x0c5f,
-      0x0c62, 0x0c65,
-      0x0c70, 0x0c81,
-      0x0c84, 0x0c84,
-      0x0c8d, 0x0c8d,
-      0x0c91, 0x0c91,
-      0x0ca9, 0x0ca9,
-      0x0cb4, 0x0cb4,
-      0x0cba, 0x0cbb,
-      0x0cc5, 0x0cc5,
-      0x0cc9, 0x0cc9,
-      0x0cce, 0x0cd4,
-      0x0cd7, 0x0cdd,
-      0x0cdf, 0x0cdf,
-      0x0ce2, 0x0ce5,
-      0x0cf0, 0x0d01,
-      0x0d04, 0x0d04,
-      0x0d0d, 0x0d0d,
-      0x0d11, 0x0d11,
-      0x0d29, 0x0d29,
-      0x0d3a, 0x0d3d,
-      0x0d44, 0x0d45,
-      0x0d49, 0x0d49,
-      0x0d4e, 0x0d56,
-      0x0d58, 0x0d5f,
-      0x0d62, 0x0d65,
-      0x0d70, 0x0d81,
-      0x0d84, 0x0d84,
-      0x0d97, 0x0d99,
-      0x0db2, 0x0db2,
-      0x0dbc, 0x0dbc,
-      0x0dbe, 0x0dbf,
-      0x0dc7, 0x0dc9,
-      0x0dcb, 0x0dce,
-      0x0dd5, 0x0dd5,
-      0x0dd7, 0x0dd7,
-      0x0de0, 0x0df1,
-      0x0df5, 0x0e00,
-      0x0e3b, 0x0e3e,
-      0x0e5c, 0x0e80,
-      0x0e83, 0x0e83,
-      0x0e85, 0x0e86,
-      0x0e89, 0x0e89,
-      0x0e8b, 0x0e8c,
-      0x0e8e, 0x0e93,
-      0x0e98, 0x0e98,
-      0x0ea0, 0x0ea0,
-      0x0ea4, 0x0ea4,
-      0x0ea6, 0x0ea6,
-      0x0ea8, 0x0ea9,
-      0x0eac, 0x0eac,
-      0x0eba, 0x0eba,
-      0x0ebe, 0x0ebf,
-      0x0ec5, 0x0ec5,
-      0x0ec7, 0x0ec7,
-      0x0ece, 0x0ecf,
-      0x0eda, 0x0edb,
-      0x0ede, 0x0eff,
-      0x0f48, 0x0f48,
-      0x0f6b, 0x0f70,
-      0x0f8c, 0x0f8f,
-      0x0f98, 0x0f98,
-      0x0fbd, 0x0fbd,
-      0x0fcd, 0x0fce,
-      0x0fd2, 0x0fff,
-      0x1022, 0x1022,
-      0x1028, 0x1028,
-      0x102b, 0x102b,
-      0x1033, 0x1035,
-      0x103a, 0x103f,
-      0x105a, 0x109f,
-      0x10c6, 0x10cf,
-      0x10fd, 0x10ff,
-      0x115a, 0x115e,
-      0x11a3, 0x11a7,
-      0x11fa, 0x11ff,
-      0x1249, 0x1249,
-      0x124e, 0x124f,
-      0x1257, 0x1257,
-      0x1259, 0x1259,
-      0x125e, 0x125f,
-      0x1289, 0x1289,
-      0x128e, 0x128f,
-      0x12b1, 0x12b1,
-      0x12b6, 0x12b7,
-      0x12bf, 0x12bf,
-      0x12c1, 0x12c1,
-      0x12c6, 0x12c7,
-      0x12d7, 0x12d7,
-      0x1311, 0x1311,
-      0x1316, 0x1317,
-      0x135b, 0x135e,
-      0x137d, 0x137f,
-      0x139a, 0x139f,
-      0x13f5, 0x1400,
-      0x1677, 0x167f,
-      0x169d, 0x169f,
-      0x16f1, 0x16ff,
-      0x170d, 0x170d,
-      0x1715, 0x171f,
-      0x1737, 0x173f,
-      0x1754, 0x175f,
-      0x176d, 0x176d,
-      0x1771, 0x1771,
-      0x1774, 0x177f,
-      0x17b4, 0x17b5,
-      0x17de, 0x17df,
-      0x17ea, 0x17ef,
-      0x17fa, 0x17ff,
-      0x180f, 0x180f,
-      0x181a, 0x181f,
-      0x1878, 0x187f,
-      0x18aa, 0x18ff,
-      0x191d, 0x191f,
-      0x192c, 0x192f,
-      0x193c, 0x193f,
-      0x1941, 0x1943,
-      0x196e, 0x196f,
-      0x1975, 0x197f,
-      0x19aa, 0x19af,
-      0x19ca, 0x19cf,
-      0x19da, 0x19dd,
-      0x1a1c, 0x1a1d,
-      0x1a20, 0x1cff,
-      0x1dc4, 0x1dff,
-      0x1e9c, 0x1e9f,
-      0x1efa, 0x1eff,
-      0x1f16, 0x1f17,
-      0x1f1e, 0x1f1f,
-      0x1f46, 0x1f47,
-      0x1f4e, 0x1f4f,
-      0x1f58, 0x1f58,
-      0x1f5a, 0x1f5a,
-      0x1f5c, 0x1f5c,
-      0x1f5e, 0x1f5e,
-      0x1f7e, 0x1f7f,
-      0x1fb5, 0x1fb5,
-      0x1fc5, 0x1fc5,
-      0x1fd4, 0x1fd5,
-      0x1fdc, 0x1fdc,
-      0x1ff0, 0x1ff1,
-      0x1ff5, 0x1ff5,
-      0x1fff, 0x1fff,
-      0x200b, 0x200f,
-      0x202a, 0x202e,
-      0x2060, 0x206f,
-      0x2072, 0x2073,
-      0x208f, 0x208f,
-      0x2095, 0x209f,
-      0x20b6, 0x20cf,
-      0x20ec, 0x20ff,
-      0x214d, 0x2152,
-      0x2184, 0x218f,
-      0x23dc, 0x23ff,
-      0x2427, 0x243f,
-      0x244b, 0x245f,
-      0x269d, 0x269f,
-      0x26b2, 0x2700,
-      0x2705, 0x2705,
-      0x270a, 0x270b,
-      0x2728, 0x2728,
-      0x274c, 0x274c,
-      0x274e, 0x274e,
-      0x2753, 0x2755,
-      0x2757, 0x2757,
-      0x275f, 0x2760,
-      0x2795, 0x2797,
-      0x27b0, 0x27b0,
-      0x27bf, 0x27bf,
-      0x27c7, 0x27cf,
-      0x27ec, 0x27ef,
-      0x2b14, 0x2bff,
-      0x2c2f, 0x2c2f,
-      0x2c5f, 0x2c7f,
-      0x2ceb, 0x2cf8,
-      0x2d26, 0x2d2f,
-      0x2d66, 0x2d6e,
-      0x2d70, 0x2d7f,
-      0x2d97, 0x2d9f,
-      0x2da7, 0x2da7,
-      0x2daf, 0x2daf,
-      0x2db7, 0x2db7,
-      0x2dbf, 0x2dbf,
-      0x2dc7, 0x2dc7,
-      0x2dcf, 0x2dcf,
-      0x2dd7, 0x2dd7,
-      0x2ddf, 0x2dff,
-      0x2e18, 0x2e1b,
-      0x2e1e, 0x2e7f,
-      0x2e9a, 0x2e9a,
-      0x2ef4, 0x2eff,
-      0x2fd6, 0x2fef,
-      0x2ffc, 0x2fff,
-      0x3040, 0x3040,
-      0x3097, 0x3098,
-      0x3100, 0x3104,
-      0x312d, 0x3130,
-      0x318f, 0x318f,
-      0x31b8, 0x31bf,
-      0x31d0, 0x31ef,
-      0x321f, 0x321f,
-      0x3244, 0x324f,
-      0x32ff, 0x32ff,
-      0x4db6, 0x4dbf,
-      0x9fbc, 0x9fff,
-      0xa48d, 0xa48f,
-      0xa4c7, 0xa6ff,
-      0xa717, 0xa7ff,
-      0xa82c, 0xabff,
-      0xd7a4, 0xf8ff,
-      0xfa2e, 0xfa2f,
-      0xfa6b, 0xfa6f,
-      0xfada, 0xfaff,
-      0xfb07, 0xfb12,
-      0xfb18, 0xfb1c,
-      0xfb37, 0xfb37,
-      0xfb3d, 0xfb3d,
-      0xfb3f, 0xfb3f,
-      0xfb42, 0xfb42,
-      0xfb45, 0xfb45,
-      0xfbb2, 0xfbd2,
-      0xfd40, 0xfd4f,
-      0xfd90, 0xfd91,
-      0xfdc8, 0xfdef,
-      0xfdfe, 0xfdff,
-      0xfe1a, 0xfe1f,
-      0xfe24, 0xfe2f,
-      0xfe53, 0xfe53,
-      0xfe67, 0xfe67,
-      0xfe6c, 0xfe6f,
-      0xfe75, 0xfe75,
-      0xfefd, 0xff00,
-      0xffbf, 0xffc1,
-      0xffc8, 0xffc9,
-      0xffd0, 0xffd1,
-      0xffd8, 0xffd9,
-      0xffdd, 0xffdf,
-      0xffe7, 0xffe7,
-      0xffef, 0xfffb,
-      0xfffe, 0xffff,
-      0x1000c, 0x1000c,
-      0x10027, 0x10027,
-      0x1003b, 0x1003b,
-      0x1003e, 0x1003e,
-      0x1004e, 0x1004f,
-      0x1005e, 0x1007f,
-      0x100fb, 0x100ff,
-      0x10103, 0x10106,
-      0x10134, 0x10136,
-      0x1018b, 0x102ff,
-      0x1031f, 0x1031f,
-      0x10324, 0x1032f,
-      0x1034b, 0x1037f,
-      0x1039e, 0x1039e,
-      0x103c4, 0x103c7,
-      0x103d6, 0x103ff,
-      0x1049e, 0x1049f,
-      0x104aa, 0x107ff,
-      0x10806, 0x10807,
-      0x10809, 0x10809,
-      0x10836, 0x10836,
-      0x10839, 0x1083b,
-      0x1083d, 0x1083e,
-      0x10840, 0x109ff,
-      0x10a04, 0x10a04,
-      0x10a07, 0x10a0b,
-      0x10a14, 0x10a14,
-      0x10a18, 0x10a18,
-      0x10a34, 0x10a37,
-      0x10a3b, 0x10a3e,
-      0x10a48, 0x10a4f,
-      0x10a59, 0x1cfff,
-      0x1d0f6, 0x1d0ff,
-      0x1d127, 0x1d129,
-      0x1d173, 0x1d17a,
-      0x1d1de, 0x1d1ff,
-      0x1d246, 0x1d2ff,
-      0x1d357, 0x1d3ff,
-      0x1d455, 0x1d455,
-      0x1d49d, 0x1d49d,
-      0x1d4a0, 0x1d4a1,
-      0x1d4a3, 0x1d4a4,
-      0x1d4a7, 0x1d4a8,
-      0x1d4ad, 0x1d4ad,
-      0x1d4ba, 0x1d4ba,
-      0x1d4bc, 0x1d4bc,
-      0x1d4c4, 0x1d4c4,
-      0x1d506, 0x1d506,
-      0x1d50b, 0x1d50c,
-      0x1d515, 0x1d515,
-      0x1d51d, 0x1d51d,
-      0x1d53a, 0x1d53a,
-      0x1d53f, 0x1d53f,
-      0x1d545, 0x1d545,
-      0x1d547, 0x1d549,
-      0x1d551, 0x1d551,
-      0x1d6a6, 0x1d6a7,
-      0x1d7ca, 0x1d7cd,
-      0x1d800, 0x1ffff,
-      0x2a6d7, 0x2f7ff,
-      0x2fa1e, 0xe00ff,
-      0xe01f0, 0x10ffff
-    } : null; /* CR_C */
-
-    /* 'Cc': General Category */
-    static final int CR_Cc[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      2,
-      0x0000, 0x001f,
-      0x007f, 0x009f
-    } : null; /* CR_Cc */
-
-    /* 'Cf': General Category */
-    static final int CR_Cf[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      14,
-      0x00ad, 0x00ad,
-      0x0600, 0x0603,
-      0x06dd, 0x06dd,
-      0x070f, 0x070f,
-      0x17b4, 0x17b5,
-      0x200b, 0x200f,
-      0x202a, 0x202e,
-      0x2060, 0x2063,
-      0x206a, 0x206f,
-      0xfeff, 0xfeff,
-      0xfff9, 0xfffb,
-      0x1d173, 0x1d17a,
-      0xe0001, 0xe0001,
-      0xe0020, 0xe007f
-    } : null; /* CR_Cf */
-
-    /* 'Cn': General Category */
-    static final int CR_Cn[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      420,
-      0x0242, 0x024f,
-      0x0370, 0x0373,
-      0x0376, 0x0379,
-      0x037b, 0x037d,
-      0x037f, 0x0383,
-      0x038b, 0x038b,
-      0x038d, 0x038d,
-      0x03a2, 0x03a2,
-      0x03cf, 0x03cf,
-      0x0487, 0x0487,
-      0x04cf, 0x04cf,
-      0x04fa, 0x04ff,
-      0x0510, 0x0530,
-      0x0557, 0x0558,
-      0x0560, 0x0560,
-      0x0588, 0x0588,
-      0x058b, 0x0590,
-      0x05ba, 0x05ba,
-      0x05c8, 0x05cf,
-      0x05eb, 0x05ef,
-      0x05f5, 0x05ff,
-      0x0604, 0x060a,
-      0x0616, 0x061a,
-      0x061c, 0x061d,
-      0x0620, 0x0620,
-      0x063b, 0x063f,
-      0x065f, 0x065f,
-      0x070e, 0x070e,
-      0x074b, 0x074c,
-      0x076e, 0x077f,
-      0x07b2, 0x0900,
-      0x093a, 0x093b,
-      0x094e, 0x094f,
-      0x0955, 0x0957,
-      0x0971, 0x097c,
-      0x097e, 0x0980,
-      0x0984, 0x0984,
-      0x098d, 0x098e,
-      0x0991, 0x0992,
-      0x09a9, 0x09a9,
-      0x09b1, 0x09b1,
-      0x09b3, 0x09b5,
-      0x09ba, 0x09bb,
-      0x09c5, 0x09c6,
-      0x09c9, 0x09ca,
-      0x09cf, 0x09d6,
-      0x09d8, 0x09db,
-      0x09de, 0x09de,
-      0x09e4, 0x09e5,
-      0x09fb, 0x0a00,
-      0x0a04, 0x0a04,
-      0x0a0b, 0x0a0e,
-      0x0a11, 0x0a12,
-      0x0a29, 0x0a29,
-      0x0a31, 0x0a31,
-      0x0a34, 0x0a34,
-      0x0a37, 0x0a37,
-      0x0a3a, 0x0a3b,
-      0x0a3d, 0x0a3d,
-      0x0a43, 0x0a46,
-      0x0a49, 0x0a4a,
-      0x0a4e, 0x0a58,
-      0x0a5d, 0x0a5d,
-      0x0a5f, 0x0a65,
-      0x0a75, 0x0a80,
-      0x0a84, 0x0a84,
-      0x0a8e, 0x0a8e,
-      0x0a92, 0x0a92,
-      0x0aa9, 0x0aa9,
-      0x0ab1, 0x0ab1,
-      0x0ab4, 0x0ab4,
-      0x0aba, 0x0abb,
-      0x0ac6, 0x0ac6,
-      0x0aca, 0x0aca,
-      0x0ace, 0x0acf,
-      0x0ad1, 0x0adf,
-      0x0ae4, 0x0ae5,
-      0x0af0, 0x0af0,
-      0x0af2, 0x0b00,
-      0x0b04, 0x0b04,
-      0x0b0d, 0x0b0e,
-      0x0b11, 0x0b12,
-      0x0b29, 0x0b29,
-      0x0b31, 0x0b31,
-      0x0b34, 0x0b34,
-      0x0b3a, 0x0b3b,
-      0x0b44, 0x0b46,
-      0x0b49, 0x0b4a,
-      0x0b4e, 0x0b55,
-      0x0b58, 0x0b5b,
-      0x0b5e, 0x0b5e,
-      0x0b62, 0x0b65,
-      0x0b72, 0x0b81,
-      0x0b84, 0x0b84,
-      0x0b8b, 0x0b8d,
-      0x0b91, 0x0b91,
-      0x0b96, 0x0b98,
-      0x0b9b, 0x0b9b,
-      0x0b9d, 0x0b9d,
-      0x0ba0, 0x0ba2,
-      0x0ba5, 0x0ba7,
-      0x0bab, 0x0bad,
-      0x0bba, 0x0bbd,
-      0x0bc3, 0x0bc5,
-      0x0bc9, 0x0bc9,
-      0x0bce, 0x0bd6,
-      0x0bd8, 0x0be5,
-      0x0bfb, 0x0c00,
-      0x0c04, 0x0c04,
-      0x0c0d, 0x0c0d,
-      0x0c11, 0x0c11,
-      0x0c29, 0x0c29,
-      0x0c34, 0x0c34,
-      0x0c3a, 0x0c3d,
-      0x0c45, 0x0c45,
-      0x0c49, 0x0c49,
-      0x0c4e, 0x0c54,
-      0x0c57, 0x0c5f,
-      0x0c62, 0x0c65,
-      0x0c70, 0x0c81,
-      0x0c84, 0x0c84,
-      0x0c8d, 0x0c8d,
-      0x0c91, 0x0c91,
-      0x0ca9, 0x0ca9,
-      0x0cb4, 0x0cb4,
-      0x0cba, 0x0cbb,
-      0x0cc5, 0x0cc5,
-      0x0cc9, 0x0cc9,
-      0x0cce, 0x0cd4,
-      0x0cd7, 0x0cdd,
-      0x0cdf, 0x0cdf,
-      0x0ce2, 0x0ce5,
-      0x0cf0, 0x0d01,
-      0x0d04, 0x0d04,
-      0x0d0d, 0x0d0d,
-      0x0d11, 0x0d11,
-      0x0d29, 0x0d29,
-      0x0d3a, 0x0d3d,
-      0x0d44, 0x0d45,
-      0x0d49, 0x0d49,
-      0x0d4e, 0x0d56,
-      0x0d58, 0x0d5f,
-      0x0d62, 0x0d65,
-      0x0d70, 0x0d81,
-      0x0d84, 0x0d84,
-      0x0d97, 0x0d99,
-      0x0db2, 0x0db2,
-      0x0dbc, 0x0dbc,
-      0x0dbe, 0x0dbf,
-      0x0dc7, 0x0dc9,
-      0x0dcb, 0x0dce,
-      0x0dd5, 0x0dd5,
-      0x0dd7, 0x0dd7,
-      0x0de0, 0x0df1,
-      0x0df5, 0x0e00,
-      0x0e3b, 0x0e3e,
-      0x0e5c, 0x0e80,
-      0x0e83, 0x0e83,
-      0x0e85, 0x0e86,
-      0x0e89, 0x0e89,
-      0x0e8b, 0x0e8c,
-      0x0e8e, 0x0e93,
-      0x0e98, 0x0e98,
-      0x0ea0, 0x0ea0,
-      0x0ea4, 0x0ea4,
-      0x0ea6, 0x0ea6,
-      0x0ea8, 0x0ea9,
-      0x0eac, 0x0eac,
-      0x0eba, 0x0eba,
-      0x0ebe, 0x0ebf,
-      0x0ec5, 0x0ec5,
-      0x0ec7, 0x0ec7,
-      0x0ece, 0x0ecf,
-      0x0eda, 0x0edb,
-      0x0ede, 0x0eff,
-      0x0f48, 0x0f48,
-      0x0f6b, 0x0f70,
-      0x0f8c, 0x0f8f,
-      0x0f98, 0x0f98,
-      0x0fbd, 0x0fbd,
-      0x0fcd, 0x0fce,
-      0x0fd2, 0x0fff,
-      0x1022, 0x1022,
-      0x1028, 0x1028,
-      0x102b, 0x102b,
-      0x1033, 0x1035,
-      0x103a, 0x103f,
-      0x105a, 0x109f,
-      0x10c6, 0x10cf,
-      0x10fd, 0x10ff,
-      0x115a, 0x115e,
-      0x11a3, 0x11a7,
-      0x11fa, 0x11ff,
-      0x1249, 0x1249,
-      0x124e, 0x124f,
-      0x1257, 0x1257,
-      0x1259, 0x1259,
-      0x125e, 0x125f,
-      0x1289, 0x1289,
-      0x128e, 0x128f,
-      0x12b1, 0x12b1,
-      0x12b6, 0x12b7,
-      0x12bf, 0x12bf,
-      0x12c1, 0x12c1,
-      0x12c6, 0x12c7,
-      0x12d7, 0x12d7,
-      0x1311, 0x1311,
-      0x1316, 0x1317,
-      0x135b, 0x135e,
-      0x137d, 0x137f,
-      0x139a, 0x139f,
-      0x13f5, 0x1400,
-      0x1677, 0x167f,
-      0x169d, 0x169f,
-      0x16f1, 0x16ff,
-      0x170d, 0x170d,
-      0x1715, 0x171f,
-      0x1737, 0x173f,
-      0x1754, 0x175f,
-      0x176d, 0x176d,
-      0x1771, 0x1771,
-      0x1774, 0x177f,
-      0x17de, 0x17df,
-      0x17ea, 0x17ef,
-      0x17fa, 0x17ff,
-      0x180f, 0x180f,
-      0x181a, 0x181f,
-      0x1878, 0x187f,
-      0x18aa, 0x18ff,
-      0x191d, 0x191f,
-      0x192c, 0x192f,
-      0x193c, 0x193f,
-      0x1941, 0x1943,
-      0x196e, 0x196f,
-      0x1975, 0x197f,
-      0x19aa, 0x19af,
-      0x19ca, 0x19cf,
-      0x19da, 0x19dd,
-      0x1a1c, 0x1a1d,
-      0x1a20, 0x1cff,
-      0x1dc4, 0x1dff,
-      0x1e9c, 0x1e9f,
-      0x1efa, 0x1eff,
-      0x1f16, 0x1f17,
-      0x1f1e, 0x1f1f,
-      0x1f46, 0x1f47,
-      0x1f4e, 0x1f4f,
-      0x1f58, 0x1f58,
-      0x1f5a, 0x1f5a,
-      0x1f5c, 0x1f5c,
-      0x1f5e, 0x1f5e,
-      0x1f7e, 0x1f7f,
-      0x1fb5, 0x1fb5,
-      0x1fc5, 0x1fc5,
-      0x1fd4, 0x1fd5,
-      0x1fdc, 0x1fdc,
-      0x1ff0, 0x1ff1,
-      0x1ff5, 0x1ff5,
-      0x1fff, 0x1fff,
-      0x2064, 0x2069,
-      0x2072, 0x2073,
-      0x208f, 0x208f,
-      0x2095, 0x209f,
-      0x20b6, 0x20cf,
-      0x20ec, 0x20ff,
-      0x214d, 0x2152,
-      0x2184, 0x218f,
-      0x23dc, 0x23ff,
-      0x2427, 0x243f,
-      0x244b, 0x245f,
-      0x269d, 0x269f,
-      0x26b2, 0x2700,
-      0x2705, 0x2705,
-      0x270a, 0x270b,
-      0x2728, 0x2728,
-      0x274c, 0x274c,
-      0x274e, 0x274e,
-      0x2753, 0x2755,
-      0x2757, 0x2757,
-      0x275f, 0x2760,
-      0x2795, 0x2797,
-      0x27b0, 0x27b0,
-      0x27bf, 0x27bf,
-      0x27c7, 0x27cf,
-      0x27ec, 0x27ef,
-      0x2b14, 0x2bff,
-      0x2c2f, 0x2c2f,
-      0x2c5f, 0x2c7f,
-      0x2ceb, 0x2cf8,
-      0x2d26, 0x2d2f,
-      0x2d66, 0x2d6e,
-      0x2d70, 0x2d7f,
-      0x2d97, 0x2d9f,
-      0x2da7, 0x2da7,
-      0x2daf, 0x2daf,
-      0x2db7, 0x2db7,
-      0x2dbf, 0x2dbf,
-      0x2dc7, 0x2dc7,
-      0x2dcf, 0x2dcf,
-      0x2dd7, 0x2dd7,
-      0x2ddf, 0x2dff,
-      0x2e18, 0x2e1b,
-      0x2e1e, 0x2e7f,
-      0x2e9a, 0x2e9a,
-      0x2ef4, 0x2eff,
-      0x2fd6, 0x2fef,
-      0x2ffc, 0x2fff,
-      0x3040, 0x3040,
-      0x3097, 0x3098,
-      0x3100, 0x3104,
-      0x312d, 0x3130,
-      0x318f, 0x318f,
-      0x31b8, 0x31bf,
-      0x31d0, 0x31ef,
-      0x321f, 0x321f,
-      0x3244, 0x324f,
-      0x32ff, 0x32ff,
-      0x4db6, 0x4dbf,
-      0x9fbc, 0x9fff,
-      0xa48d, 0xa48f,
-      0xa4c7, 0xa6ff,
-      0xa717, 0xa7ff,
-      0xa82c, 0xabff,
-      0xd7a4, 0xd7ff,
-      0xfa2e, 0xfa2f,
-      0xfa6b, 0xfa6f,
-      0xfada, 0xfaff,
-      0xfb07, 0xfb12,
-      0xfb18, 0xfb1c,
-      0xfb37, 0xfb37,
-      0xfb3d, 0xfb3d,
-      0xfb3f, 0xfb3f,
-      0xfb42, 0xfb42,
-      0xfb45, 0xfb45,
-      0xfbb2, 0xfbd2,
-      0xfd40, 0xfd4f,
-      0xfd90, 0xfd91,
-      0xfdc8, 0xfdef,
-      0xfdfe, 0xfdff,
-      0xfe1a, 0xfe1f,
-      0xfe24, 0xfe2f,
-      0xfe53, 0xfe53,
-      0xfe67, 0xfe67,
-      0xfe6c, 0xfe6f,
-      0xfe75, 0xfe75,
-      0xfefd, 0xfefe,
-      0xff00, 0xff00,
-      0xffbf, 0xffc1,
-      0xffc8, 0xffc9,
-      0xffd0, 0xffd1,
-      0xffd8, 0xffd9,
-      0xffdd, 0xffdf,
-      0xffe7, 0xffe7,
-      0xffef, 0xfff8,
-      0xfffe, 0xffff,
-      0x1000c, 0x1000c,
-      0x10027, 0x10027,
-      0x1003b, 0x1003b,
-      0x1003e, 0x1003e,
-      0x1004e, 0x1004f,
-      0x1005e, 0x1007f,
-      0x100fb, 0x100ff,
-      0x10103, 0x10106,
-      0x10134, 0x10136,
-      0x1018b, 0x102ff,
-      0x1031f, 0x1031f,
-      0x10324, 0x1032f,
-      0x1034b, 0x1037f,
-      0x1039e, 0x1039e,
-      0x103c4, 0x103c7,
-      0x103d6, 0x103ff,
-      0x1049e, 0x1049f,
-      0x104aa, 0x107ff,
-      0x10806, 0x10807,
-      0x10809, 0x10809,
-      0x10836, 0x10836,
-      0x10839, 0x1083b,
-      0x1083d, 0x1083e,
-      0x10840, 0x109ff,
-      0x10a04, 0x10a04,
-      0x10a07, 0x10a0b,
-      0x10a14, 0x10a14,
-      0x10a18, 0x10a18,
-      0x10a34, 0x10a37,
-      0x10a3b, 0x10a3e,
-      0x10a48, 0x10a4f,
-      0x10a59, 0x1cfff,
-      0x1d0f6, 0x1d0ff,
-      0x1d127, 0x1d129,
-      0x1d1de, 0x1d1ff,
-      0x1d246, 0x1d2ff,
-      0x1d357, 0x1d3ff,
-      0x1d455, 0x1d455,
-      0x1d49d, 0x1d49d,
-      0x1d4a0, 0x1d4a1,
-      0x1d4a3, 0x1d4a4,
-      0x1d4a7, 0x1d4a8,
-      0x1d4ad, 0x1d4ad,
-      0x1d4ba, 0x1d4ba,
-      0x1d4bc, 0x1d4bc,
-      0x1d4c4, 0x1d4c4,
-      0x1d506, 0x1d506,
-      0x1d50b, 0x1d50c,
-      0x1d515, 0x1d515,
-      0x1d51d, 0x1d51d,
-      0x1d53a, 0x1d53a,
-      0x1d53f, 0x1d53f,
-      0x1d545, 0x1d545,
-      0x1d547, 0x1d549,
-      0x1d551, 0x1d551,
-      0x1d6a6, 0x1d6a7,
-      0x1d7ca, 0x1d7cd,
-      0x1d800, 0x1ffff,
-      0x2a6d7, 0x2f7ff,
-      0x2fa1e, 0xe0000,
-      0xe0002, 0xe001f,
-      0xe0080, 0xe00ff,
-      0xe01f0, 0xeffff,
-      0xffffe, 0xfffff,
-      0x10fffe, 0x10ffff
-    } : null; /* CR_Cn */
-
-    /* 'Co': General Category */
-    static final int CR_Co[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      3,
-      0xe000, 0xf8ff,
-      0xf0000, 0xffffd,
-      0x100000, 0x10fffd
-    } : null; /* CR_Co */
-
-    /* 'Cs': General Category */
-    static final int CR_Cs[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      1,
-      0xd800, 0xdfff
-    } : null; /* CR_Cs */
-
-    /* 'L': Major Category */
-    static final int CR_L[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      347,
-      0x0041, 0x005a,
-      0x0061, 0x007a,
-      0x00aa, 0x00aa,
-      0x00b5, 0x00b5,
-      0x00ba, 0x00ba,
-      0x00c0, 0x00d6,
-      0x00d8, 0x00f6,
-      0x00f8, 0x0241,
-      0x0250, 0x02c1,
-      0x02c6, 0x02d1,
-      0x02e0, 0x02e4,
-      0x02ee, 0x02ee,
-      0x037a, 0x037a,
-      0x0386, 0x0386,
-      0x0388, 0x038a,
-      0x038c, 0x038c,
-      0x038e, 0x03a1,
-      0x03a3, 0x03ce,
-      0x03d0, 0x03f5,
-      0x03f7, 0x0481,
-      0x048a, 0x04ce,
-      0x04d0, 0x04f9,
-      0x0500, 0x050f,
-      0x0531, 0x0556,
-      0x0559, 0x0559,
-      0x0561, 0x0587,
-      0x05d0, 0x05ea,
-      0x05f0, 0x05f2,
-      0x0621, 0x063a,
-      0x0640, 0x064a,
-      0x066e, 0x066f,
-      0x0671, 0x06d3,
-      0x06d5, 0x06d5,
-      0x06e5, 0x06e6,
-      0x06ee, 0x06ef,
-      0x06fa, 0x06fc,
-      0x06ff, 0x06ff,
-      0x0710, 0x0710,
-      0x0712, 0x072f,
-      0x074d, 0x076d,
-      0x0780, 0x07a5,
-      0x07b1, 0x07b1,
-      0x0904, 0x0939,
-      0x093d, 0x093d,
-      0x0950, 0x0950,
-      0x0958, 0x0961,
-      0x097d, 0x097d,
-      0x0985, 0x098c,
-      0x098f, 0x0990,
-      0x0993, 0x09a8,
-      0x09aa, 0x09b0,
-      0x09b2, 0x09b2,
-      0x09b6, 0x09b9,
-      0x09bd, 0x09bd,
-      0x09ce, 0x09ce,
-      0x09dc, 0x09dd,
-      0x09df, 0x09e1,
-      0x09f0, 0x09f1,
-      0x0a05, 0x0a0a,
-      0x0a0f, 0x0a10,
-      0x0a13, 0x0a28,
-      0x0a2a, 0x0a30,
-      0x0a32, 0x0a33,
-      0x0a35, 0x0a36,
-      0x0a38, 0x0a39,
-      0x0a59, 0x0a5c,
-      0x0a5e, 0x0a5e,
-      0x0a72, 0x0a74,
-      0x0a85, 0x0a8d,
-      0x0a8f, 0x0a91,
-      0x0a93, 0x0aa8,
-      0x0aaa, 0x0ab0,
-      0x0ab2, 0x0ab3,
-      0x0ab5, 0x0ab9,
-      0x0abd, 0x0abd,
-      0x0ad0, 0x0ad0,
-      0x0ae0, 0x0ae1,
-      0x0b05, 0x0b0c,
-      0x0b0f, 0x0b10,
-      0x0b13, 0x0b28,
-      0x0b2a, 0x0b30,
-      0x0b32, 0x0b33,
-      0x0b35, 0x0b39,
-      0x0b3d, 0x0b3d,
-      0x0b5c, 0x0b5d,
-      0x0b5f, 0x0b61,
-      0x0b71, 0x0b71,
-      0x0b83, 0x0b83,
-      0x0b85, 0x0b8a,
-      0x0b8e, 0x0b90,
-      0x0b92, 0x0b95,
-      0x0b99, 0x0b9a,
-      0x0b9c, 0x0b9c,
-      0x0b9e, 0x0b9f,
-      0x0ba3, 0x0ba4,
-      0x0ba8, 0x0baa,
-      0x0bae, 0x0bb9,
-      0x0c05, 0x0c0c,
-      0x0c0e, 0x0c10,
-      0x0c12, 0x0c28,
-      0x0c2a, 0x0c33,
-      0x0c35, 0x0c39,
-      0x0c60, 0x0c61,
-      0x0c85, 0x0c8c,
-      0x0c8e, 0x0c90,
-      0x0c92, 0x0ca8,
-      0x0caa, 0x0cb3,
-      0x0cb5, 0x0cb9,
-      0x0cbd, 0x0cbd,
-      0x0cde, 0x0cde,
-      0x0ce0, 0x0ce1,
-      0x0d05, 0x0d0c,
-      0x0d0e, 0x0d10,
-      0x0d12, 0x0d28,
-      0x0d2a, 0x0d39,
-      0x0d60, 0x0d61,
-      0x0d85, 0x0d96,
-      0x0d9a, 0x0db1,
-      0x0db3, 0x0dbb,
-      0x0dbd, 0x0dbd,
-      0x0dc0, 0x0dc6,
-      0x0e01, 0x0e30,
-      0x0e32, 0x0e33,
-      0x0e40, 0x0e46,
-      0x0e81, 0x0e82,
-      0x0e84, 0x0e84,
-      0x0e87, 0x0e88,
-      0x0e8a, 0x0e8a,
-      0x0e8d, 0x0e8d,
-      0x0e94, 0x0e97,
-      0x0e99, 0x0e9f,
-      0x0ea1, 0x0ea3,
-      0x0ea5, 0x0ea5,
-      0x0ea7, 0x0ea7,
-      0x0eaa, 0x0eab,
-      0x0ead, 0x0eb0,
-      0x0eb2, 0x0eb3,
-      0x0ebd, 0x0ebd,
-      0x0ec0, 0x0ec4,
-      0x0ec6, 0x0ec6,
-      0x0edc, 0x0edd,
-      0x0f00, 0x0f00,
-      0x0f40, 0x0f47,
-      0x0f49, 0x0f6a,
-      0x0f88, 0x0f8b,
-      0x1000, 0x1021,
-      0x1023, 0x1027,
-      0x1029, 0x102a,
-      0x1050, 0x1055,
-      0x10a0, 0x10c5,
-      0x10d0, 0x10fa,
-      0x10fc, 0x10fc,
-      0x1100, 0x1159,
-      0x115f, 0x11a2,
-      0x11a8, 0x11f9,
-      0x1200, 0x1248,
-      0x124a, 0x124d,
-      0x1250, 0x1256,
-      0x1258, 0x1258,
-      0x125a, 0x125d,
-      0x1260, 0x1288,
-      0x128a, 0x128d,
-      0x1290, 0x12b0,
-      0x12b2, 0x12b5,
-      0x12b8, 0x12be,
-      0x12c0, 0x12c0,
-      0x12c2, 0x12c5,
-      0x12c8, 0x12d6,
-      0x12d8, 0x1310,
-      0x1312, 0x1315,
-      0x1318, 0x135a,
-      0x1380, 0x138f,
-      0x13a0, 0x13f4,
-      0x1401, 0x166c,
-      0x166f, 0x1676,
-      0x1681, 0x169a,
-      0x16a0, 0x16ea,
-      0x1700, 0x170c,
-      0x170e, 0x1711,
-      0x1720, 0x1731,
-      0x1740, 0x1751,
-      0x1760, 0x176c,
-      0x176e, 0x1770,
-      0x1780, 0x17b3,
-      0x17d7, 0x17d7,
-      0x17dc, 0x17dc,
-      0x1820, 0x1877,
-      0x1880, 0x18a8,
-      0x1900, 0x191c,
-      0x1950, 0x196d,
-      0x1970, 0x1974,
-      0x1980, 0x19a9,
-      0x19c1, 0x19c7,
-      0x1a00, 0x1a16,
-      0x1d00, 0x1dbf,
-      0x1e00, 0x1e9b,
-      0x1ea0, 0x1ef9,
-      0x1f00, 0x1f15,
-      0x1f18, 0x1f1d,
-      0x1f20, 0x1f45,
-      0x1f48, 0x1f4d,
-      0x1f50, 0x1f57,
-      0x1f59, 0x1f59,
-      0x1f5b, 0x1f5b,
-      0x1f5d, 0x1f5d,
-      0x1f5f, 0x1f7d,
-      0x1f80, 0x1fb4,
-      0x1fb6, 0x1fbc,
-      0x1fbe, 0x1fbe,
-      0x1fc2, 0x1fc4,
-      0x1fc6, 0x1fcc,
-      0x1fd0, 0x1fd3,
-      0x1fd6, 0x1fdb,
-      0x1fe0, 0x1fec,
-      0x1ff2, 0x1ff4,
-      0x1ff6, 0x1ffc,
-      0x2071, 0x2071,
-      0x207f, 0x207f,
-      0x2090, 0x2094,
-      0x2102, 0x2102,
-      0x2107, 0x2107,
-      0x210a, 0x2113,
-      0x2115, 0x2115,
-      0x2119, 0x211d,
-      0x2124, 0x2124,
-      0x2126, 0x2126,
-      0x2128, 0x2128,
-      0x212a, 0x212d,
-      0x212f, 0x2131,
-      0x2133, 0x2139,
-      0x213c, 0x213f,
-      0x2145, 0x2149,
-      0x2c00, 0x2c2e,
-      0x2c30, 0x2c5e,
-      0x2c80, 0x2ce4,
-      0x2d00, 0x2d25,
-      0x2d30, 0x2d65,
-      0x2d6f, 0x2d6f,
-      0x2d80, 0x2d96,
-      0x2da0, 0x2da6,
-      0x2da8, 0x2dae,
-      0x2db0, 0x2db6,
-      0x2db8, 0x2dbe,
-      0x2dc0, 0x2dc6,
-      0x2dc8, 0x2dce,
-      0x2dd0, 0x2dd6,
-      0x2dd8, 0x2dde,
-      0x3005, 0x3006,
-      0x3031, 0x3035,
-      0x303b, 0x303c,
-      0x3041, 0x3096,
-      0x309d, 0x309f,
-      0x30a1, 0x30fa,
-      0x30fc, 0x30ff,
-      0x3105, 0x312c,
-      0x3131, 0x318e,
-      0x31a0, 0x31b7,
-      0x31f0, 0x31ff,
-      0x3400, 0x4db5,
-      0x4e00, 0x9fbb,
-      0xa000, 0xa48c,
-      0xa800, 0xa801,
-      0xa803, 0xa805,
-      0xa807, 0xa80a,
-      0xa80c, 0xa822,
-      0xac00, 0xd7a3,
-      0xf900, 0xfa2d,
-      0xfa30, 0xfa6a,
-      0xfa70, 0xfad9,
-      0xfb00, 0xfb06,
-      0xfb13, 0xfb17,
-      0xfb1d, 0xfb1d,
-      0xfb1f, 0xfb28,
-      0xfb2a, 0xfb36,
-      0xfb38, 0xfb3c,
-      0xfb3e, 0xfb3e,
-      0xfb40, 0xfb41,
-      0xfb43, 0xfb44,
-      0xfb46, 0xfbb1,
-      0xfbd3, 0xfd3d,
-      0xfd50, 0xfd8f,
-      0xfd92, 0xfdc7,
-      0xfdf0, 0xfdfb,
-      0xfe70, 0xfe74,
-      0xfe76, 0xfefc,
-      0xff21, 0xff3a,
-      0xff41, 0xff5a,
-      0xff66, 0xffbe,
-      0xffc2, 0xffc7,
-      0xffca, 0xffcf,
-      0xffd2, 0xffd7,
-      0xffda, 0xffdc,
-      0x10000, 0x1000b,
-      0x1000d, 0x10026,
-      0x10028, 0x1003a,
-      0x1003c, 0x1003d,
-      0x1003f, 0x1004d,
-      0x10050, 0x1005d,
-      0x10080, 0x100fa,
-      0x10300, 0x1031e,
-      0x10330, 0x10349,
-      0x10380, 0x1039d,
-      0x103a0, 0x103c3,
-      0x103c8, 0x103cf,
-      0x10400, 0x1049d,
-      0x10800, 0x10805,
-      0x10808, 0x10808,
-      0x1080a, 0x10835,
-      0x10837, 0x10838,
-      0x1083c, 0x1083c,
-      0x1083f, 0x1083f,
-      0x10a00, 0x10a00,
-      0x10a10, 0x10a13,
-      0x10a15, 0x10a17,
-      0x10a19, 0x10a33,
-      0x1d400, 0x1d454,
-      0x1d456, 0x1d49c,
-      0x1d49e, 0x1d49f,
-      0x1d4a2, 0x1d4a2,
-      0x1d4a5, 0x1d4a6,
-      0x1d4a9, 0x1d4ac,
-      0x1d4ae, 0x1d4b9,
-      0x1d4bb, 0x1d4bb,
-      0x1d4bd, 0x1d4c3,
-      0x1d4c5, 0x1d505,
-      0x1d507, 0x1d50a,
-      0x1d50d, 0x1d514,
-      0x1d516, 0x1d51c,
-      0x1d51e, 0x1d539,
-      0x1d53b, 0x1d53e,
-      0x1d540, 0x1d544,
-      0x1d546, 0x1d546,
-      0x1d54a, 0x1d550,
-      0x1d552, 0x1d6a5,
-      0x1d6a8, 0x1d6c0,
-      0x1d6c2, 0x1d6da,
-      0x1d6dc, 0x1d6fa,
-      0x1d6fc, 0x1d714,
-      0x1d716, 0x1d734,
-      0x1d736, 0x1d74e,
-      0x1d750, 0x1d76e,
-      0x1d770, 0x1d788,
-      0x1d78a, 0x1d7a8,
-      0x1d7aa, 0x1d7c2,
-      0x1d7c4, 0x1d7c9,
-      0x20000, 0x2a6d6,
-      0x2f800, 0x2fa1d
-    } : null; /* CR_L */
-
-    /* 'Ll': General Category */
-    static final int CR_Ll[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      480,
-      0x0061, 0x007a,
-      0x00aa, 0x00aa,
-      0x00b5, 0x00b5,
-      0x00ba, 0x00ba,
-      0x00df, 0x00f6,
-      0x00f8, 0x00ff,
-      0x0101, 0x0101,
-      0x0103, 0x0103,
-      0x0105, 0x0105,
-      0x0107, 0x0107,
-      0x0109, 0x0109,
-      0x010b, 0x010b,
-      0x010d, 0x010d,
-      0x010f, 0x010f,
-      0x0111, 0x0111,
-      0x0113, 0x0113,
-      0x0115, 0x0115,
-      0x0117, 0x0117,
-      0x0119, 0x0119,
-      0x011b, 0x011b,
-      0x011d, 0x011d,
-      0x011f, 0x011f,
-      0x0121, 0x0121,
-      0x0123, 0x0123,
-      0x0125, 0x0125,
-      0x0127, 0x0127,
-      0x0129, 0x0129,
-      0x012b, 0x012b,
-      0x012d, 0x012d,
-      0x012f, 0x012f,
-      0x0131, 0x0131,
-      0x0133, 0x0133,
-      0x0135, 0x0135,
-      0x0137, 0x0138,
-      0x013a, 0x013a,
-      0x013c, 0x013c,
-      0x013e, 0x013e,
-      0x0140, 0x0140,
-      0x0142, 0x0142,
-      0x0144, 0x0144,
-      0x0146, 0x0146,
-      0x0148, 0x0149,
-      0x014b, 0x014b,
-      0x014d, 0x014d,
-      0x014f, 0x014f,
-      0x0151, 0x0151,
-      0x0153, 0x0153,
-      0x0155, 0x0155,
-      0x0157, 0x0157,
-      0x0159, 0x0159,
-      0x015b, 0x015b,
-      0x015d, 0x015d,
-      0x015f, 0x015f,
-      0x0161, 0x0161,
-      0x0163, 0x0163,
-      0x0165, 0x0165,
-      0x0167, 0x0167,
-      0x0169, 0x0169,
-      0x016b, 0x016b,
-      0x016d, 0x016d,
-      0x016f, 0x016f,
-      0x0171, 0x0171,
-      0x0173, 0x0173,
-      0x0175, 0x0175,
-      0x0177, 0x0177,
-      0x017a, 0x017a,
-      0x017c, 0x017c,
-      0x017e, 0x0180,
-      0x0183, 0x0183,
-      0x0185, 0x0185,
-      0x0188, 0x0188,
-      0x018c, 0x018d,
-      0x0192, 0x0192,
-      0x0195, 0x0195,
-      0x0199, 0x019b,
-      0x019e, 0x019e,
-      0x01a1, 0x01a1,
-      0x01a3, 0x01a3,
-      0x01a5, 0x01a5,
-      0x01a8, 0x01a8,
-      0x01aa, 0x01ab,
-      0x01ad, 0x01ad,
-      0x01b0, 0x01b0,
-      0x01b4, 0x01b4,
-      0x01b6, 0x01b6,
-      0x01b9, 0x01ba,
-      0x01bd, 0x01bf,
-      0x01c6, 0x01c6,
-      0x01c9, 0x01c9,
-      0x01cc, 0x01cc,
-      0x01ce, 0x01ce,
-      0x01d0, 0x01d0,
-      0x01d2, 0x01d2,
-      0x01d4, 0x01d4,
-      0x01d6, 0x01d6,
-      0x01d8, 0x01d8,
-      0x01da, 0x01da,
-      0x01dc, 0x01dd,
-      0x01df, 0x01df,
-      0x01e1, 0x01e1,
-      0x01e3, 0x01e3,
-      0x01e5, 0x01e5,
-      0x01e7, 0x01e7,
-      0x01e9, 0x01e9,
-      0x01eb, 0x01eb,
-      0x01ed, 0x01ed,
-      0x01ef, 0x01f0,
-      0x01f3, 0x01f3,
-      0x01f5, 0x01f5,
-      0x01f9, 0x01f9,
-      0x01fb, 0x01fb,
-      0x01fd, 0x01fd,
-      0x01ff, 0x01ff,
-      0x0201, 0x0201,
-      0x0203, 0x0203,
-      0x0205, 0x0205,
-      0x0207, 0x0207,
-      0x0209, 0x0209,
-      0x020b, 0x020b,
-      0x020d, 0x020d,
-      0x020f, 0x020f,
-      0x0211, 0x0211,
-      0x0213, 0x0213,
-      0x0215, 0x0215,
-      0x0217, 0x0217,
-      0x0219, 0x0219,
-      0x021b, 0x021b,
-      0x021d, 0x021d,
-      0x021f, 0x021f,
-      0x0221, 0x0221,
-      0x0223, 0x0223,
-      0x0225, 0x0225,
-      0x0227, 0x0227,
-      0x0229, 0x0229,
-      0x022b, 0x022b,
-      0x022d, 0x022d,
-      0x022f, 0x022f,
-      0x0231, 0x0231,
-      0x0233, 0x0239,
-      0x023c, 0x023c,
-      0x023f, 0x0240,
-      0x0250, 0x02af,
-      0x0390, 0x0390,
-      0x03ac, 0x03ce,
-      0x03d0, 0x03d1,
-      0x03d5, 0x03d7,
-      0x03d9, 0x03d9,
-      0x03db, 0x03db,
-      0x03dd, 0x03dd,
-      0x03df, 0x03df,
-      0x03e1, 0x03e1,
-      0x03e3, 0x03e3,
-      0x03e5, 0x03e5,
-      0x03e7, 0x03e7,
-      0x03e9, 0x03e9,
-      0x03eb, 0x03eb,
-      0x03ed, 0x03ed,
-      0x03ef, 0x03f3,
-      0x03f5, 0x03f5,
-      0x03f8, 0x03f8,
-      0x03fb, 0x03fc,
-      0x0430, 0x045f,
-      0x0461, 0x0461,
-      0x0463, 0x0463,
-      0x0465, 0x0465,
-      0x0467, 0x0467,
-      0x0469, 0x0469,
-      0x046b, 0x046b,
-      0x046d, 0x046d,
-      0x046f, 0x046f,
-      0x0471, 0x0471,
-      0x0473, 0x0473,
-      0x0475, 0x0475,
-      0x0477, 0x0477,
-      0x0479, 0x0479,
-      0x047b, 0x047b,
-      0x047d, 0x047d,
-      0x047f, 0x047f,
-      0x0481, 0x0481,
-      0x048b, 0x048b,
-      0x048d, 0x048d,
-      0x048f, 0x048f,
-      0x0491, 0x0491,
-      0x0493, 0x0493,
-      0x0495, 0x0495,
-      0x0497, 0x0497,
-      0x0499, 0x0499,
-      0x049b, 0x049b,
-      0x049d, 0x049d,
-      0x049f, 0x049f,
-      0x04a1, 0x04a1,
-      0x04a3, 0x04a3,
-      0x04a5, 0x04a5,
-      0x04a7, 0x04a7,
-      0x04a9, 0x04a9,
-      0x04ab, 0x04ab,
-      0x04ad, 0x04ad,
-      0x04af, 0x04af,
-      0x04b1, 0x04b1,
-      0x04b3, 0x04b3,
-      0x04b5, 0x04b5,
-      0x04b7, 0x04b7,
-      0x04b9, 0x04b9,
-      0x04bb, 0x04bb,
-      0x04bd, 0x04bd,
-      0x04bf, 0x04bf,
-      0x04c2, 0x04c2,
-      0x04c4, 0x04c4,
-      0x04c6, 0x04c6,
-      0x04c8, 0x04c8,
-      0x04ca, 0x04ca,
-      0x04cc, 0x04cc,
-      0x04ce, 0x04ce,
-      0x04d1, 0x04d1,
-      0x04d3, 0x04d3,
-      0x04d5, 0x04d5,
-      0x04d7, 0x04d7,
-      0x04d9, 0x04d9,
-      0x04db, 0x04db,
-      0x04dd, 0x04dd,
-      0x04df, 0x04df,
-      0x04e1, 0x04e1,
-      0x04e3, 0x04e3,
-      0x04e5, 0x04e5,
-      0x04e7, 0x04e7,
-      0x04e9, 0x04e9,
-      0x04eb, 0x04eb,
-      0x04ed, 0x04ed,
-      0x04ef, 0x04ef,
-      0x04f1, 0x04f1,
-      0x04f3, 0x04f3,
-      0x04f5, 0x04f5,
-      0x04f7, 0x04f7,
-      0x04f9, 0x04f9,
-      0x0501, 0x0501,
-      0x0503, 0x0503,
-      0x0505, 0x0505,
-      0x0507, 0x0507,
-      0x0509, 0x0509,
-      0x050b, 0x050b,
-      0x050d, 0x050d,
-      0x050f, 0x050f,
-      0x0561, 0x0587,
-      0x1d00, 0x1d2b,
-      0x1d62, 0x1d77,
-      0x1d79, 0x1d9a,
-      0x1e01, 0x1e01,
-      0x1e03, 0x1e03,
-      0x1e05, 0x1e05,
-      0x1e07, 0x1e07,
-      0x1e09, 0x1e09,
-      0x1e0b, 0x1e0b,
-      0x1e0d, 0x1e0d,
-      0x1e0f, 0x1e0f,
-      0x1e11, 0x1e11,
-      0x1e13, 0x1e13,
-      0x1e15, 0x1e15,
-      0x1e17, 0x1e17,
-      0x1e19, 0x1e19,
-      0x1e1b, 0x1e1b,
-      0x1e1d, 0x1e1d,
-      0x1e1f, 0x1e1f,
-      0x1e21, 0x1e21,
-      0x1e23, 0x1e23,
-      0x1e25, 0x1e25,
-      0x1e27, 0x1e27,
-      0x1e29, 0x1e29,
-      0x1e2b, 0x1e2b,
-      0x1e2d, 0x1e2d,
-      0x1e2f, 0x1e2f,
-      0x1e31, 0x1e31,
-      0x1e33, 0x1e33,
-      0x1e35, 0x1e35,
-      0x1e37, 0x1e37,
-      0x1e39, 0x1e39,
-      0x1e3b, 0x1e3b,
-      0x1e3d, 0x1e3d,
-      0x1e3f, 0x1e3f,
-      0x1e41, 0x1e41,
-      0x1e43, 0x1e43,
-      0x1e45, 0x1e45,
-      0x1e47, 0x1e47,
-      0x1e49, 0x1e49,
-      0x1e4b, 0x1e4b,
-      0x1e4d, 0x1e4d,
-      0x1e4f, 0x1e4f,
-      0x1e51, 0x1e51,
-      0x1e53, 0x1e53,
-      0x1e55, 0x1e55,
-      0x1e57, 0x1e57,
-      0x1e59, 0x1e59,
-      0x1e5b, 0x1e5b,
-      0x1e5d, 0x1e5d,
-      0x1e5f, 0x1e5f,
-      0x1e61, 0x1e61,
-      0x1e63, 0x1e63,
-      0x1e65, 0x1e65,
-      0x1e67, 0x1e67,
-      0x1e69, 0x1e69,
-      0x1e6b, 0x1e6b,
-      0x1e6d, 0x1e6d,
-      0x1e6f, 0x1e6f,
-      0x1e71, 0x1e71,
-      0x1e73, 0x1e73,
-      0x1e75, 0x1e75,
-      0x1e77, 0x1e77,
-      0x1e79, 0x1e79,
-      0x1e7b, 0x1e7b,
-      0x1e7d, 0x1e7d,
-      0x1e7f, 0x1e7f,
-      0x1e81, 0x1e81,
-      0x1e83, 0x1e83,
-      0x1e85, 0x1e85,
-      0x1e87, 0x1e87,
-      0x1e89, 0x1e89,
-      0x1e8b, 0x1e8b,
-      0x1e8d, 0x1e8d,
-      0x1e8f, 0x1e8f,
-      0x1e91, 0x1e91,
-      0x1e93, 0x1e93,
-      0x1e95, 0x1e9b,
-      0x1ea1, 0x1ea1,
-      0x1ea3, 0x1ea3,
-      0x1ea5, 0x1ea5,
-      0x1ea7, 0x1ea7,
-      0x1ea9, 0x1ea9,
-      0x1eab, 0x1eab,
-      0x1ead, 0x1ead,
-      0x1eaf, 0x1eaf,
-      0x1eb1, 0x1eb1,
-      0x1eb3, 0x1eb3,
-      0x1eb5, 0x1eb5,
-      0x1eb7, 0x1eb7,
-      0x1eb9, 0x1eb9,
-      0x1ebb, 0x1ebb,
-      0x1ebd, 0x1ebd,
-      0x1ebf, 0x1ebf,
-      0x1ec1, 0x1ec1,
-      0x1ec3, 0x1ec3,
-      0x1ec5, 0x1ec5,
-      0x1ec7, 0x1ec7,
-      0x1ec9, 0x1ec9,
-      0x1ecb, 0x1ecb,
-      0x1ecd, 0x1ecd,
-      0x1ecf, 0x1ecf,
-      0x1ed1, 0x1ed1,
-      0x1ed3, 0x1ed3,
-      0x1ed5, 0x1ed5,
-      0x1ed7, 0x1ed7,
-      0x1ed9, 0x1ed9,
-      0x1edb, 0x1edb,
-      0x1edd, 0x1edd,
-      0x1edf, 0x1edf,
-      0x1ee1, 0x1ee1,
-      0x1ee3, 0x1ee3,
-      0x1ee5, 0x1ee5,
-      0x1ee7, 0x1ee7,
-      0x1ee9, 0x1ee9,
-      0x1eeb, 0x1eeb,
-      0x1eed, 0x1eed,
-      0x1eef, 0x1eef,
-      0x1ef1, 0x1ef1,
-      0x1ef3, 0x1ef3,
-      0x1ef5, 0x1ef5,
-      0x1ef7, 0x1ef7,
-      0x1ef9, 0x1ef9,
-      0x1f00, 0x1f07,
-      0x1f10, 0x1f15,
-      0x1f20, 0x1f27,
-      0x1f30, 0x1f37,
-      0x1f40, 0x1f45,
-      0x1f50, 0x1f57,
-      0x1f60, 0x1f67,
-      0x1f70, 0x1f7d,
-      0x1f80, 0x1f87,
-      0x1f90, 0x1f97,
-      0x1fa0, 0x1fa7,
-      0x1fb0, 0x1fb4,
-      0x1fb6, 0x1fb7,
-      0x1fbe, 0x1fbe,
-      0x1fc2, 0x1fc4,
-      0x1fc6, 0x1fc7,
-      0x1fd0, 0x1fd3,
-      0x1fd6, 0x1fd7,
-      0x1fe0, 0x1fe7,
-      0x1ff2, 0x1ff4,
-      0x1ff6, 0x1ff7,
-      0x2071, 0x2071,
-      0x207f, 0x207f,
-      0x210a, 0x210a,
-      0x210e, 0x210f,
-      0x2113, 0x2113,
-      0x212f, 0x212f,
-      0x2134, 0x2134,
-      0x2139, 0x2139,
-      0x213c, 0x213d,
-      0x2146, 0x2149,
-      0x2c30, 0x2c5e,
-      0x2c81, 0x2c81,
-      0x2c83, 0x2c83,
-      0x2c85, 0x2c85,
-      0x2c87, 0x2c87,
-      0x2c89, 0x2c89,
-      0x2c8b, 0x2c8b,
-      0x2c8d, 0x2c8d,
-      0x2c8f, 0x2c8f,
-      0x2c91, 0x2c91,
-      0x2c93, 0x2c93,
-      0x2c95, 0x2c95,
-      0x2c97, 0x2c97,
-      0x2c99, 0x2c99,
-      0x2c9b, 0x2c9b,
-      0x2c9d, 0x2c9d,
-      0x2c9f, 0x2c9f,
-      0x2ca1, 0x2ca1,
-      0x2ca3, 0x2ca3,
-      0x2ca5, 0x2ca5,
-      0x2ca7, 0x2ca7,
-      0x2ca9, 0x2ca9,
-      0x2cab, 0x2cab,
-      0x2cad, 0x2cad,
-      0x2caf, 0x2caf,
-      0x2cb1, 0x2cb1,
-      0x2cb3, 0x2cb3,
-      0x2cb5, 0x2cb5,
-      0x2cb7, 0x2cb7,
-      0x2cb9, 0x2cb9,
-      0x2cbb, 0x2cbb,
-      0x2cbd, 0x2cbd,
-      0x2cbf, 0x2cbf,
-      0x2cc1, 0x2cc1,
-      0x2cc3, 0x2cc3,
-      0x2cc5, 0x2cc5,
-      0x2cc7, 0x2cc7,
-      0x2cc9, 0x2cc9,
-      0x2ccb, 0x2ccb,
-      0x2ccd, 0x2ccd,
-      0x2ccf, 0x2ccf,
-      0x2cd1, 0x2cd1,
-      0x2cd3, 0x2cd3,
-      0x2cd5, 0x2cd5,
-      0x2cd7, 0x2cd7,
-      0x2cd9, 0x2cd9,
-      0x2cdb, 0x2cdb,
-      0x2cdd, 0x2cdd,
-      0x2cdf, 0x2cdf,
-      0x2ce1, 0x2ce1,
-      0x2ce3, 0x2ce4,
-      0x2d00, 0x2d25,
-      0xfb00, 0xfb06,
-      0xfb13, 0xfb17,
-      0xff41, 0xff5a,
-      0x10428, 0x1044f,
-      0x1d41a, 0x1d433,
-      0x1d44e, 0x1d454,
-      0x1d456, 0x1d467,
-      0x1d482, 0x1d49b,
-      0x1d4b6, 0x1d4b9,
-      0x1d4bb, 0x1d4bb,
-      0x1d4bd, 0x1d4c3,
-      0x1d4c5, 0x1d4cf,
-      0x1d4ea, 0x1d503,
-      0x1d51e, 0x1d537,
-      0x1d552, 0x1d56b,
-      0x1d586, 0x1d59f,
-      0x1d5ba, 0x1d5d3,
-      0x1d5ee, 0x1d607,
-      0x1d622, 0x1d63b,
-      0x1d656, 0x1d66f,
-      0x1d68a, 0x1d6a5,
-      0x1d6c2, 0x1d6da,
-      0x1d6dc, 0x1d6e1,
-      0x1d6fc, 0x1d714,
-      0x1d716, 0x1d71b,
-      0x1d736, 0x1d74e,
-      0x1d750, 0x1d755,
-      0x1d770, 0x1d788,
-      0x1d78a, 0x1d78f,
-      0x1d7aa, 0x1d7c2,
-      0x1d7c4, 0x1d7c9
-    } : null; /* CR_Ll */
-
-    /* 'Lm': General Category */
-    static final int CR_Lm[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      26,
-      0x02b0, 0x02c1,
-      0x02c6, 0x02d1,
-      0x02e0, 0x02e4,
-      0x02ee, 0x02ee,
-      0x037a, 0x037a,
-      0x0559, 0x0559,
-      0x0640, 0x0640,
-      0x06e5, 0x06e6,
-      0x0e46, 0x0e46,
-      0x0ec6, 0x0ec6,
-      0x10fc, 0x10fc,
-      0x17d7, 0x17d7,
-      0x1843, 0x1843,
-      0x1d2c, 0x1d61,
-      0x1d78, 0x1d78,
-      0x1d9b, 0x1dbf,
-      0x2090, 0x2094,
-      0x2d6f, 0x2d6f,
-      0x3005, 0x3005,
-      0x3031, 0x3035,
-      0x303b, 0x303b,
-      0x309d, 0x309e,
-      0x30fc, 0x30fe,
-      0xa015, 0xa015,
-      0xff70, 0xff70,
-      0xff9e, 0xff9f
-    } : null; /* CR_Lm */
-
-    /* 'Lo': General Category */
-    static final int CR_Lo[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      245,
-      0x01bb, 0x01bb,
-      0x01c0, 0x01c3,
-      0x05d0, 0x05ea,
-      0x05f0, 0x05f2,
-      0x0621, 0x063a,
-      0x0641, 0x064a,
-      0x066e, 0x066f,
-      0x0671, 0x06d3,
-      0x06d5, 0x06d5,
-      0x06ee, 0x06ef,
-      0x06fa, 0x06fc,
-      0x06ff, 0x06ff,
-      0x0710, 0x0710,
-      0x0712, 0x072f,
-      0x074d, 0x076d,
-      0x0780, 0x07a5,
-      0x07b1, 0x07b1,
-      0x0904, 0x0939,
-      0x093d, 0x093d,
-      0x0950, 0x0950,
-      0x0958, 0x0961,
-      0x097d, 0x097d,
-      0x0985, 0x098c,
-      0x098f, 0x0990,
-      0x0993, 0x09a8,
-      0x09aa, 0x09b0,
-      0x09b2, 0x09b2,
-      0x09b6, 0x09b9,
-      0x09bd, 0x09bd,
-      0x09ce, 0x09ce,
-      0x09dc, 0x09dd,
-      0x09df, 0x09e1,
-      0x09f0, 0x09f1,
-      0x0a05, 0x0a0a,
-      0x0a0f, 0x0a10,
-      0x0a13, 0x0a28,
-      0x0a2a, 0x0a30,
-      0x0a32, 0x0a33,
-      0x0a35, 0x0a36,
-      0x0a38, 0x0a39,
-      0x0a59, 0x0a5c,
-      0x0a5e, 0x0a5e,
-      0x0a72, 0x0a74,
-      0x0a85, 0x0a8d,
-      0x0a8f, 0x0a91,
-      0x0a93, 0x0aa8,
-      0x0aaa, 0x0ab0,
-      0x0ab2, 0x0ab3,
-      0x0ab5, 0x0ab9,
-      0x0abd, 0x0abd,
-      0x0ad0, 0x0ad0,
-      0x0ae0, 0x0ae1,
-      0x0b05, 0x0b0c,
-      0x0b0f, 0x0b10,
-      0x0b13, 0x0b28,
-      0x0b2a, 0x0b30,
-      0x0b32, 0x0b33,
-      0x0b35, 0x0b39,
-      0x0b3d, 0x0b3d,
-      0x0b5c, 0x0b5d,
-      0x0b5f, 0x0b61,
-      0x0b71, 0x0b71,
-      0x0b83, 0x0b83,
-      0x0b85, 0x0b8a,
-      0x0b8e, 0x0b90,
-      0x0b92, 0x0b95,
-      0x0b99, 0x0b9a,
-      0x0b9c, 0x0b9c,
-      0x0b9e, 0x0b9f,
-      0x0ba3, 0x0ba4,
-      0x0ba8, 0x0baa,
-      0x0bae, 0x0bb9,
-      0x0c05, 0x0c0c,
-      0x0c0e, 0x0c10,
-      0x0c12, 0x0c28,
-      0x0c2a, 0x0c33,
-      0x0c35, 0x0c39,
-      0x0c60, 0x0c61,
-      0x0c85, 0x0c8c,
-      0x0c8e, 0x0c90,
-      0x0c92, 0x0ca8,
-      0x0caa, 0x0cb3,
-      0x0cb5, 0x0cb9,
-      0x0cbd, 0x0cbd,
-      0x0cde, 0x0cde,
-      0x0ce0, 0x0ce1,
-      0x0d05, 0x0d0c,
-      0x0d0e, 0x0d10,
-      0x0d12, 0x0d28,
-      0x0d2a, 0x0d39,
-      0x0d60, 0x0d61,
-      0x0d85, 0x0d96,
-      0x0d9a, 0x0db1,
-      0x0db3, 0x0dbb,
-      0x0dbd, 0x0dbd,
-      0x0dc0, 0x0dc6,
-      0x0e01, 0x0e30,
-      0x0e32, 0x0e33,
-      0x0e40, 0x0e45,
-      0x0e81, 0x0e82,
-      0x0e84, 0x0e84,
-      0x0e87, 0x0e88,
-      0x0e8a, 0x0e8a,
-      0x0e8d, 0x0e8d,
-      0x0e94, 0x0e97,
-      0x0e99, 0x0e9f,
-      0x0ea1, 0x0ea3,
-      0x0ea5, 0x0ea5,
-      0x0ea7, 0x0ea7,
-      0x0eaa, 0x0eab,
-      0x0ead, 0x0eb0,
-      0x0eb2, 0x0eb3,
-      0x0ebd, 0x0ebd,
-      0x0ec0, 0x0ec4,
-      0x0edc, 0x0edd,
-      0x0f00, 0x0f00,
-      0x0f40, 0x0f47,
-      0x0f49, 0x0f6a,
-      0x0f88, 0x0f8b,
-      0x1000, 0x1021,
-      0x1023, 0x1027,
-      0x1029, 0x102a,
-      0x1050, 0x1055,
-      0x10d0, 0x10fa,
-      0x1100, 0x1159,
-      0x115f, 0x11a2,
-      0x11a8, 0x11f9,
-      0x1200, 0x1248,
-      0x124a, 0x124d,
-      0x1250, 0x1256,
-      0x1258, 0x1258,
-      0x125a, 0x125d,
-      0x1260, 0x1288,
-      0x128a, 0x128d,
-      0x1290, 0x12b0,
-      0x12b2, 0x12b5,
-      0x12b8, 0x12be,
-      0x12c0, 0x12c0,
-      0x12c2, 0x12c5,
-      0x12c8, 0x12d6,
-      0x12d8, 0x1310,
-      0x1312, 0x1315,
-      0x1318, 0x135a,
-      0x1380, 0x138f,
-      0x13a0, 0x13f4,
-      0x1401, 0x166c,
-      0x166f, 0x1676,
-      0x1681, 0x169a,
-      0x16a0, 0x16ea,
-      0x1700, 0x170c,
-      0x170e, 0x1711,
-      0x1720, 0x1731,
-      0x1740, 0x1751,
-      0x1760, 0x176c,
-      0x176e, 0x1770,
-      0x1780, 0x17b3,
-      0x17dc, 0x17dc,
-      0x1820, 0x1842,
-      0x1844, 0x1877,
-      0x1880, 0x18a8,
-      0x1900, 0x191c,
-      0x1950, 0x196d,
-      0x1970, 0x1974,
-      0x1980, 0x19a9,
-      0x19c1, 0x19c7,
-      0x1a00, 0x1a16,
-      0x2135, 0x2138,
-      0x2d30, 0x2d65,
-      0x2d80, 0x2d96,
-      0x2da0, 0x2da6,
-      0x2da8, 0x2dae,
-      0x2db0, 0x2db6,
-      0x2db8, 0x2dbe,
-      0x2dc0, 0x2dc6,
-      0x2dc8, 0x2dce,
-      0x2dd0, 0x2dd6,
-      0x2dd8, 0x2dde,
-      0x3006, 0x3006,
-      0x303c, 0x303c,
-      0x3041, 0x3096,
-      0x309f, 0x309f,
-      0x30a1, 0x30fa,
-      0x30ff, 0x30ff,
-      0x3105, 0x312c,
-      0x3131, 0x318e,
-      0x31a0, 0x31b7,
-      0x31f0, 0x31ff,
-      0x3400, 0x4db5,
-      0x4e00, 0x9fbb,
-      0xa000, 0xa014,
-      0xa016, 0xa48c,
-      0xa800, 0xa801,
-      0xa803, 0xa805,
-      0xa807, 0xa80a,
-      0xa80c, 0xa822,
-      0xac00, 0xd7a3,
-      0xf900, 0xfa2d,
-      0xfa30, 0xfa6a,
-      0xfa70, 0xfad9,
-      0xfb1d, 0xfb1d,
-      0xfb1f, 0xfb28,
-      0xfb2a, 0xfb36,
-      0xfb38, 0xfb3c,
-      0xfb3e, 0xfb3e,
-      0xfb40, 0xfb41,
-      0xfb43, 0xfb44,
-      0xfb46, 0xfbb1,
-      0xfbd3, 0xfd3d,
-      0xfd50, 0xfd8f,
-      0xfd92, 0xfdc7,
-      0xfdf0, 0xfdfb,
-      0xfe70, 0xfe74,
-      0xfe76, 0xfefc,
-      0xff66, 0xff6f,
-      0xff71, 0xff9d,
-      0xffa0, 0xffbe,
-      0xffc2, 0xffc7,
-      0xffca, 0xffcf,
-      0xffd2, 0xffd7,
-      0xffda, 0xffdc,
-      0x10000, 0x1000b,
-      0x1000d, 0x10026,
-      0x10028, 0x1003a,
-      0x1003c, 0x1003d,
-      0x1003f, 0x1004d,
-      0x10050, 0x1005d,
-      0x10080, 0x100fa,
-      0x10300, 0x1031e,
-      0x10330, 0x10349,
-      0x10380, 0x1039d,
-      0x103a0, 0x103c3,
-      0x103c8, 0x103cf,
-      0x10450, 0x1049d,
-      0x10800, 0x10805,
-      0x10808, 0x10808,
-      0x1080a, 0x10835,
-      0x10837, 0x10838,
-      0x1083c, 0x1083c,
-      0x1083f, 0x1083f,
-      0x10a00, 0x10a00,
-      0x10a10, 0x10a13,
-      0x10a15, 0x10a17,
-      0x10a19, 0x10a33,
-      0x20000, 0x2a6d6,
-      0x2f800, 0x2fa1d
-    } : null; /* CR_Lo */
-
-    /* 'Lt': General Category */
-    static final int CR_Lt[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      10,
-      0x01c5, 0x01c5,
-      0x01c8, 0x01c8,
-      0x01cb, 0x01cb,
-      0x01f2, 0x01f2,
-      0x1f88, 0x1f8f,
-      0x1f98, 0x1f9f,
-      0x1fa8, 0x1faf,
-      0x1fbc, 0x1fbc,
-      0x1fcc, 0x1fcc,
-      0x1ffc, 0x1ffc
-    } : null; /* CR_Lt */
-
-    /* 'Lu': General Category */
-    static final int CR_Lu[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      476,
-      0x0041, 0x005a,
-      0x00c0, 0x00d6,
-      0x00d8, 0x00de,
-      0x0100, 0x0100,
-      0x0102, 0x0102,
-      0x0104, 0x0104,
-      0x0106, 0x0106,
-      0x0108, 0x0108,
-      0x010a, 0x010a,
-      0x010c, 0x010c,
-      0x010e, 0x010e,
-      0x0110, 0x0110,
-      0x0112, 0x0112,
-      0x0114, 0x0114,
-      0x0116, 0x0116,
-      0x0118, 0x0118,
-      0x011a, 0x011a,
-      0x011c, 0x011c,
-      0x011e, 0x011e,
-      0x0120, 0x0120,
-      0x0122, 0x0122,
-      0x0124, 0x0124,
-      0x0126, 0x0126,
-      0x0128, 0x0128,
-      0x012a, 0x012a,
-      0x012c, 0x012c,
-      0x012e, 0x012e,
-      0x0130, 0x0130,
-      0x0132, 0x0132,
-      0x0134, 0x0134,
-      0x0136, 0x0136,
-      0x0139, 0x0139,
-      0x013b, 0x013b,
-      0x013d, 0x013d,
-      0x013f, 0x013f,
-      0x0141, 0x0141,
-      0x0143, 0x0143,
-      0x0145, 0x0145,
-      0x0147, 0x0147,
-      0x014a, 0x014a,
-      0x014c, 0x014c,
-      0x014e, 0x014e,
-      0x0150, 0x0150,
-      0x0152, 0x0152,
-      0x0154, 0x0154,
-      0x0156, 0x0156,
-      0x0158, 0x0158,
-      0x015a, 0x015a,
-      0x015c, 0x015c,
-      0x015e, 0x015e,
-      0x0160, 0x0160,
-      0x0162, 0x0162,
-      0x0164, 0x0164,
-      0x0166, 0x0166,
-      0x0168, 0x0168,
-      0x016a, 0x016a,
-      0x016c, 0x016c,
-      0x016e, 0x016e,
-      0x0170, 0x0170,
-      0x0172, 0x0172,
-      0x0174, 0x0174,
-      0x0176, 0x0176,
-      0x0178, 0x0179,
-      0x017b, 0x017b,
-      0x017d, 0x017d,
-      0x0181, 0x0182,
-      0x0184, 0x0184,
-      0x0186, 0x0187,
-      0x0189, 0x018b,
-      0x018e, 0x0191,
-      0x0193, 0x0194,
-      0x0196, 0x0198,
-      0x019c, 0x019d,
-      0x019f, 0x01a0,
-      0x01a2, 0x01a2,
-      0x01a4, 0x01a4,
-      0x01a6, 0x01a7,
-      0x01a9, 0x01a9,
-      0x01ac, 0x01ac,
-      0x01ae, 0x01af,
-      0x01b1, 0x01b3,
-      0x01b5, 0x01b5,
-      0x01b7, 0x01b8,
-      0x01bc, 0x01bc,
-      0x01c4, 0x01c4,
-      0x01c7, 0x01c7,
-      0x01ca, 0x01ca,
-      0x01cd, 0x01cd,
-      0x01cf, 0x01cf,
-      0x01d1, 0x01d1,
-      0x01d3, 0x01d3,
-      0x01d5, 0x01d5,
-      0x01d7, 0x01d7,
-      0x01d9, 0x01d9,
-      0x01db, 0x01db,
-      0x01de, 0x01de,
-      0x01e0, 0x01e0,
-      0x01e2, 0x01e2,
-      0x01e4, 0x01e4,
-      0x01e6, 0x01e6,
-      0x01e8, 0x01e8,
-      0x01ea, 0x01ea,
-      0x01ec, 0x01ec,
-      0x01ee, 0x01ee,
-      0x01f1, 0x01f1,
-      0x01f4, 0x01f4,
-      0x01f6, 0x01f8,
-      0x01fa, 0x01fa,
-      0x01fc, 0x01fc,
-      0x01fe, 0x01fe,
-      0x0200, 0x0200,
-      0x0202, 0x0202,
-      0x0204, 0x0204,
-      0x0206, 0x0206,
-      0x0208, 0x0208,
-      0x020a, 0x020a,
-      0x020c, 0x020c,
-      0x020e, 0x020e,
-      0x0210, 0x0210,
-      0x0212, 0x0212,
-      0x0214, 0x0214,
-      0x0216, 0x0216,
-      0x0218, 0x0218,
-      0x021a, 0x021a,
-      0x021c, 0x021c,
-      0x021e, 0x021e,
-      0x0220, 0x0220,
-      0x0222, 0x0222,
-      0x0224, 0x0224,
-      0x0226, 0x0226,
-      0x0228, 0x0228,
-      0x022a, 0x022a,
-      0x022c, 0x022c,
-      0x022e, 0x022e,
-      0x0230, 0x0230,
-      0x0232, 0x0232,
-      0x023a, 0x023b,
-      0x023d, 0x023e,
-      0x0241, 0x0241,
-      0x0386, 0x0386,
-      0x0388, 0x038a,
-      0x038c, 0x038c,
-      0x038e, 0x038f,
-      0x0391, 0x03a1,
-      0x03a3, 0x03ab,
-      0x03d2, 0x03d4,
-      0x03d8, 0x03d8,
-      0x03da, 0x03da,
-      0x03dc, 0x03dc,
-      0x03de, 0x03de,
-      0x03e0, 0x03e0,
-      0x03e2, 0x03e2,
-      0x03e4, 0x03e4,
-      0x03e6, 0x03e6,
-      0x03e8, 0x03e8,
-      0x03ea, 0x03ea,
-      0x03ec, 0x03ec,
-      0x03ee, 0x03ee,
-      0x03f4, 0x03f4,
-      0x03f7, 0x03f7,
-      0x03f9, 0x03fa,
-      0x03fd, 0x042f,
-      0x0460, 0x0460,
-      0x0462, 0x0462,
-      0x0464, 0x0464,
-      0x0466, 0x0466,
-      0x0468, 0x0468,
-      0x046a, 0x046a,
-      0x046c, 0x046c,
-      0x046e, 0x046e,
-      0x0470, 0x0470,
-      0x0472, 0x0472,
-      0x0474, 0x0474,
-      0x0476, 0x0476,
-      0x0478, 0x0478,
-      0x047a, 0x047a,
-      0x047c, 0x047c,
-      0x047e, 0x047e,
-      0x0480, 0x0480,
-      0x048a, 0x048a,
-      0x048c, 0x048c,
-      0x048e, 0x048e,
-      0x0490, 0x0490,
-      0x0492, 0x0492,
-      0x0494, 0x0494,
-      0x0496, 0x0496,
-      0x0498, 0x0498,
-      0x049a, 0x049a,
-      0x049c, 0x049c,
-      0x049e, 0x049e,
-      0x04a0, 0x04a0,
-      0x04a2, 0x04a2,
-      0x04a4, 0x04a4,
-      0x04a6, 0x04a6,
-      0x04a8, 0x04a8,
-      0x04aa, 0x04aa,
-      0x04ac, 0x04ac,
-      0x04ae, 0x04ae,
-      0x04b0, 0x04b0,
-      0x04b2, 0x04b2,
-      0x04b4, 0x04b4,
-      0x04b6, 0x04b6,
-      0x04b8, 0x04b8,
-      0x04ba, 0x04ba,
-      0x04bc, 0x04bc,
-      0x04be, 0x04be,
-      0x04c0, 0x04c1,
-      0x04c3, 0x04c3,
-      0x04c5, 0x04c5,
-      0x04c7, 0x04c7,
-      0x04c9, 0x04c9,
-      0x04cb, 0x04cb,
-      0x04cd, 0x04cd,
-      0x04d0, 0x04d0,
-      0x04d2, 0x04d2,
-      0x04d4, 0x04d4,
-      0x04d6, 0x04d6,
-      0x04d8, 0x04d8,
-      0x04da, 0x04da,
-      0x04dc, 0x04dc,
-      0x04de, 0x04de,
-      0x04e0, 0x04e0,
-      0x04e2, 0x04e2,
-      0x04e4, 0x04e4,
-      0x04e6, 0x04e6,
-      0x04e8, 0x04e8,
-      0x04ea, 0x04ea,
-      0x04ec, 0x04ec,
-      0x04ee, 0x04ee,
-      0x04f0, 0x04f0,
-      0x04f2, 0x04f2,
-      0x04f4, 0x04f4,
-      0x04f6, 0x04f6,
-      0x04f8, 0x04f8,
-      0x0500, 0x0500,
-      0x0502, 0x0502,
-      0x0504, 0x0504,
-      0x0506, 0x0506,
-      0x0508, 0x0508,
-      0x050a, 0x050a,
-      0x050c, 0x050c,
-      0x050e, 0x050e,
-      0x0531, 0x0556,
-      0x10a0, 0x10c5,
-      0x1e00, 0x1e00,
-      0x1e02, 0x1e02,
-      0x1e04, 0x1e04,
-      0x1e06, 0x1e06,
-      0x1e08, 0x1e08,
-      0x1e0a, 0x1e0a,
-      0x1e0c, 0x1e0c,
-      0x1e0e, 0x1e0e,
-      0x1e10, 0x1e10,
-      0x1e12, 0x1e12,
-      0x1e14, 0x1e14,
-      0x1e16, 0x1e16,
-      0x1e18, 0x1e18,
-      0x1e1a, 0x1e1a,
-      0x1e1c, 0x1e1c,
-      0x1e1e, 0x1e1e,
-      0x1e20, 0x1e20,
-      0x1e22, 0x1e22,
-      0x1e24, 0x1e24,
-      0x1e26, 0x1e26,
-      0x1e28, 0x1e28,
-      0x1e2a, 0x1e2a,
-      0x1e2c, 0x1e2c,
-      0x1e2e, 0x1e2e,
-      0x1e30, 0x1e30,
-      0x1e32, 0x1e32,
-      0x1e34, 0x1e34,
-      0x1e36, 0x1e36,
-      0x1e38, 0x1e38,
-      0x1e3a, 0x1e3a,
-      0x1e3c, 0x1e3c,
-      0x1e3e, 0x1e3e,
-      0x1e40, 0x1e40,
-      0x1e42, 0x1e42,
-      0x1e44, 0x1e44,
-      0x1e46, 0x1e46,
-      0x1e48, 0x1e48,
-      0x1e4a, 0x1e4a,
-      0x1e4c, 0x1e4c,
-      0x1e4e, 0x1e4e,
-      0x1e50, 0x1e50,
-      0x1e52, 0x1e52,
-      0x1e54, 0x1e54,
-      0x1e56, 0x1e56,
-      0x1e58, 0x1e58,
-      0x1e5a, 0x1e5a,
-      0x1e5c, 0x1e5c,
-      0x1e5e, 0x1e5e,
-      0x1e60, 0x1e60,
-      0x1e62, 0x1e62,
-      0x1e64, 0x1e64,
-      0x1e66, 0x1e66,
-      0x1e68, 0x1e68,
-      0x1e6a, 0x1e6a,
-      0x1e6c, 0x1e6c,
-      0x1e6e, 0x1e6e,
-      0x1e70, 0x1e70,
-      0x1e72, 0x1e72,
-      0x1e74, 0x1e74,
-      0x1e76, 0x1e76,
-      0x1e78, 0x1e78,
-      0x1e7a, 0x1e7a,
-      0x1e7c, 0x1e7c,
-      0x1e7e, 0x1e7e,
-      0x1e80, 0x1e80,
-      0x1e82, 0x1e82,
-      0x1e84, 0x1e84,
-      0x1e86, 0x1e86,
-      0x1e88, 0x1e88,
-      0x1e8a, 0x1e8a,
-      0x1e8c, 0x1e8c,
-      0x1e8e, 0x1e8e,
-      0x1e90, 0x1e90,
-      0x1e92, 0x1e92,
-      0x1e94, 0x1e94,
-      0x1ea0, 0x1ea0,
-      0x1ea2, 0x1ea2,
-      0x1ea4, 0x1ea4,
-      0x1ea6, 0x1ea6,
-      0x1ea8, 0x1ea8,
-      0x1eaa, 0x1eaa,
-      0x1eac, 0x1eac,
-      0x1eae, 0x1eae,
-      0x1eb0, 0x1eb0,
-      0x1eb2, 0x1eb2,
-      0x1eb4, 0x1eb4,
-      0x1eb6, 0x1eb6,
-      0x1eb8, 0x1eb8,
-      0x1eba, 0x1eba,
-      0x1ebc, 0x1ebc,
-      0x1ebe, 0x1ebe,
-      0x1ec0, 0x1ec0,
-      0x1ec2, 0x1ec2,
-      0x1ec4, 0x1ec4,
-      0x1ec6, 0x1ec6,
-      0x1ec8, 0x1ec8,
-      0x1eca, 0x1eca,
-      0x1ecc, 0x1ecc,
-      0x1ece, 0x1ece,
-      0x1ed0, 0x1ed0,
-      0x1ed2, 0x1ed2,
-      0x1ed4, 0x1ed4,
-      0x1ed6, 0x1ed6,
-      0x1ed8, 0x1ed8,
-      0x1eda, 0x1eda,
-      0x1edc, 0x1edc,
-      0x1ede, 0x1ede,
-      0x1ee0, 0x1ee0,
-      0x1ee2, 0x1ee2,
-      0x1ee4, 0x1ee4,
-      0x1ee6, 0x1ee6,
-      0x1ee8, 0x1ee8,
-      0x1eea, 0x1eea,
-      0x1eec, 0x1eec,
-      0x1eee, 0x1eee,
-      0x1ef0, 0x1ef0,
-      0x1ef2, 0x1ef2,
-      0x1ef4, 0x1ef4,
-      0x1ef6, 0x1ef6,
-      0x1ef8, 0x1ef8,
-      0x1f08, 0x1f0f,
-      0x1f18, 0x1f1d,
-      0x1f28, 0x1f2f,
-      0x1f38, 0x1f3f,
-      0x1f48, 0x1f4d,
-      0x1f59, 0x1f59,
-      0x1f5b, 0x1f5b,
-      0x1f5d, 0x1f5d,
-      0x1f5f, 0x1f5f,
-      0x1f68, 0x1f6f,
-      0x1fb8, 0x1fbb,
-      0x1fc8, 0x1fcb,
-      0x1fd8, 0x1fdb,
-      0x1fe8, 0x1fec,
-      0x1ff8, 0x1ffb,
-      0x2102, 0x2102,
-      0x2107, 0x2107,
-      0x210b, 0x210d,
-      0x2110, 0x2112,
-      0x2115, 0x2115,
-      0x2119, 0x211d,
-      0x2124, 0x2124,
-      0x2126, 0x2126,
-      0x2128, 0x2128,
-      0x212a, 0x212d,
-      0x2130, 0x2131,
-      0x2133, 0x2133,
-      0x213e, 0x213f,
-      0x2145, 0x2145,
-      0x2c00, 0x2c2e,
-      0x2c80, 0x2c80,
-      0x2c82, 0x2c82,
-      0x2c84, 0x2c84,
-      0x2c86, 0x2c86,
-      0x2c88, 0x2c88,
-      0x2c8a, 0x2c8a,
-      0x2c8c, 0x2c8c,
-      0x2c8e, 0x2c8e,
-      0x2c90, 0x2c90,
-      0x2c92, 0x2c92,
-      0x2c94, 0x2c94,
-      0x2c96, 0x2c96,
-      0x2c98, 0x2c98,
-      0x2c9a, 0x2c9a,
-      0x2c9c, 0x2c9c,
-      0x2c9e, 0x2c9e,
-      0x2ca0, 0x2ca0,
-      0x2ca2, 0x2ca2,
-      0x2ca4, 0x2ca4,
-      0x2ca6, 0x2ca6,
-      0x2ca8, 0x2ca8,
-      0x2caa, 0x2caa,
-      0x2cac, 0x2cac,
-      0x2cae, 0x2cae,
-      0x2cb0, 0x2cb0,
-      0x2cb2, 0x2cb2,
-      0x2cb4, 0x2cb4,
-      0x2cb6, 0x2cb6,
-      0x2cb8, 0x2cb8,
-      0x2cba, 0x2cba,
-      0x2cbc, 0x2cbc,
-      0x2cbe, 0x2cbe,
-      0x2cc0, 0x2cc0,
-      0x2cc2, 0x2cc2,
-      0x2cc4, 0x2cc4,
-      0x2cc6, 0x2cc6,
-      0x2cc8, 0x2cc8,
-      0x2cca, 0x2cca,
-      0x2ccc, 0x2ccc,
-      0x2cce, 0x2cce,
-      0x2cd0, 0x2cd0,
-      0x2cd2, 0x2cd2,
-      0x2cd4, 0x2cd4,
-      0x2cd6, 0x2cd6,
-      0x2cd8, 0x2cd8,
-      0x2cda, 0x2cda,
-      0x2cdc, 0x2cdc,
-      0x2cde, 0x2cde,
-      0x2ce0, 0x2ce0,
-      0x2ce2, 0x2ce2,
-      0xff21, 0xff3a,
-      0x10400, 0x10427,
-      0x1d400, 0x1d419,
-      0x1d434, 0x1d44d,
-      0x1d468, 0x1d481,
-      0x1d49c, 0x1d49c,
-      0x1d49e, 0x1d49f,
-      0x1d4a2, 0x1d4a2,
-      0x1d4a5, 0x1d4a6,
-      0x1d4a9, 0x1d4ac,
-      0x1d4ae, 0x1d4b5,
-      0x1d4d0, 0x1d4e9,
-      0x1d504, 0x1d505,
-      0x1d507, 0x1d50a,
-      0x1d50d, 0x1d514,
-      0x1d516, 0x1d51c,
-      0x1d538, 0x1d539,
-      0x1d53b, 0x1d53e,
-      0x1d540, 0x1d544,
-      0x1d546, 0x1d546,
-      0x1d54a, 0x1d550,
-      0x1d56c, 0x1d585,
-      0x1d5a0, 0x1d5b9,
-      0x1d5d4, 0x1d5ed,
-      0x1d608, 0x1d621,
-      0x1d63c, 0x1d655,
-      0x1d670, 0x1d689,
-      0x1d6a8, 0x1d6c0,
-      0x1d6e2, 0x1d6fa,
-      0x1d71c, 0x1d734,
-      0x1d756, 0x1d76e,
-      0x1d790, 0x1d7a8
-    } : null; /* CR_Lu */
-
-    /* 'M': Major Category */
-    static final int CR_M[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      133,
-      0x0300, 0x036f,
-      0x0483, 0x0486,
-      0x0488, 0x0489,
-      0x0591, 0x05b9,
-      0x05bb, 0x05bd,
-      0x05bf, 0x05bf,
-      0x05c1, 0x05c2,
-      0x05c4, 0x05c5,
-      0x05c7, 0x05c7,
-      0x0610, 0x0615,
-      0x064b, 0x065e,
-      0x0670, 0x0670,
-      0x06d6, 0x06dc,
-      0x06de, 0x06e4,
-      0x06e7, 0x06e8,
-      0x06ea, 0x06ed,
-      0x0711, 0x0711,
-      0x0730, 0x074a,
-      0x07a6, 0x07b0,
-      0x0901, 0x0903,
-      0x093c, 0x093c,
-      0x093e, 0x094d,
-      0x0951, 0x0954,
-      0x0962, 0x0963,
-      0x0981, 0x0983,
-      0x09bc, 0x09bc,
-      0x09be, 0x09c4,
-      0x09c7, 0x09c8,
-      0x09cb, 0x09cd,
-      0x09d7, 0x09d7,
-      0x09e2, 0x09e3,
-      0x0a01, 0x0a03,
-      0x0a3c, 0x0a3c,
-      0x0a3e, 0x0a42,
-      0x0a47, 0x0a48,
-      0x0a4b, 0x0a4d,
-      0x0a70, 0x0a71,
-      0x0a81, 0x0a83,
-      0x0abc, 0x0abc,
-      0x0abe, 0x0ac5,
-      0x0ac7, 0x0ac9,
-      0x0acb, 0x0acd,
-      0x0ae2, 0x0ae3,
-      0x0b01, 0x0b03,
-      0x0b3c, 0x0b3c,
-      0x0b3e, 0x0b43,
-      0x0b47, 0x0b48,
-      0x0b4b, 0x0b4d,
-      0x0b56, 0x0b57,
-      0x0b82, 0x0b82,
-      0x0bbe, 0x0bc2,
-      0x0bc6, 0x0bc8,
-      0x0bca, 0x0bcd,
-      0x0bd7, 0x0bd7,
-      0x0c01, 0x0c03,
-      0x0c3e, 0x0c44,
-      0x0c46, 0x0c48,
-      0x0c4a, 0x0c4d,
-      0x0c55, 0x0c56,
-      0x0c82, 0x0c83,
-      0x0cbc, 0x0cbc,
-      0x0cbe, 0x0cc4,
-      0x0cc6, 0x0cc8,
-      0x0cca, 0x0ccd,
-      0x0cd5, 0x0cd6,
-      0x0d02, 0x0d03,
-      0x0d3e, 0x0d43,
-      0x0d46, 0x0d48,
-      0x0d4a, 0x0d4d,
-      0x0d57, 0x0d57,
-      0x0d82, 0x0d83,
-      0x0dca, 0x0dca,
-      0x0dcf, 0x0dd4,
-      0x0dd6, 0x0dd6,
-      0x0dd8, 0x0ddf,
-      0x0df2, 0x0df3,
-      0x0e31, 0x0e31,
-      0x0e34, 0x0e3a,
-      0x0e47, 0x0e4e,
-      0x0eb1, 0x0eb1,
-      0x0eb4, 0x0eb9,
-      0x0ebb, 0x0ebc,
-      0x0ec8, 0x0ecd,
-      0x0f18, 0x0f19,
-      0x0f35, 0x0f35,
-      0x0f37, 0x0f37,
-      0x0f39, 0x0f39,
-      0x0f3e, 0x0f3f,
-      0x0f71, 0x0f84,
-      0x0f86, 0x0f87,
-      0x0f90, 0x0f97,
-      0x0f99, 0x0fbc,
-      0x0fc6, 0x0fc6,
-      0x102c, 0x1032,
-      0x1036, 0x1039,
-      0x1056, 0x1059,
-      0x135f, 0x135f,
-      0x1712, 0x1714,
-      0x1732, 0x1734,
-      0x1752, 0x1753,
-      0x1772, 0x1773,
-      0x17b6, 0x17d3,
-      0x17dd, 0x17dd,
-      0x180b, 0x180d,
-      0x18a9, 0x18a9,
-      0x1920, 0x192b,
-      0x1930, 0x193b,
-      0x19b0, 0x19c0,
-      0x19c8, 0x19c9,
-      0x1a17, 0x1a1b,
-      0x1dc0, 0x1dc3,
-      0x20d0, 0x20eb,
-      0x302a, 0x302f,
-      0x3099, 0x309a,
-      0xa802, 0xa802,
-      0xa806, 0xa806,
-      0xa80b, 0xa80b,
-      0xa823, 0xa827,
-      0xfb1e, 0xfb1e,
-      0xfe00, 0xfe0f,
-      0xfe20, 0xfe23,
-      0x10a01, 0x10a03,
-      0x10a05, 0x10a06,
-      0x10a0c, 0x10a0f,
-      0x10a38, 0x10a3a,
-      0x10a3f, 0x10a3f,
-      0x1d165, 0x1d169,
-      0x1d16d, 0x1d172,
-      0x1d17b, 0x1d182,
-      0x1d185, 0x1d18b,
-      0x1d1aa, 0x1d1ad,
-      0x1d242, 0x1d244,
-      0xe0100, 0xe01ef
-    } : null; /* CR_M */
-
-    /* 'Mc': General Category */
-    static final int CR_Mc[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      63,
-      0x0903, 0x0903,
-      0x093e, 0x0940,
-      0x0949, 0x094c,
-      0x0982, 0x0983,
-      0x09be, 0x09c0,
-      0x09c7, 0x09c8,
-      0x09cb, 0x09cc,
-      0x09d7, 0x09d7,
-      0x0a03, 0x0a03,
-      0x0a3e, 0x0a40,
-      0x0a83, 0x0a83,
-      0x0abe, 0x0ac0,
-      0x0ac9, 0x0ac9,
-      0x0acb, 0x0acc,
-      0x0b02, 0x0b03,
-      0x0b3e, 0x0b3e,
-      0x0b40, 0x0b40,
-      0x0b47, 0x0b48,
-      0x0b4b, 0x0b4c,
-      0x0b57, 0x0b57,
-      0x0bbe, 0x0bbf,
-      0x0bc1, 0x0bc2,
-      0x0bc6, 0x0bc8,
-      0x0bca, 0x0bcc,
-      0x0bd7, 0x0bd7,
-      0x0c01, 0x0c03,
-      0x0c41, 0x0c44,
-      0x0c82, 0x0c83,
-      0x0cbe, 0x0cbe,
-      0x0cc0, 0x0cc4,
-      0x0cc7, 0x0cc8,
-      0x0cca, 0x0ccb,
-      0x0cd5, 0x0cd6,
-      0x0d02, 0x0d03,
-      0x0d3e, 0x0d40,
-      0x0d46, 0x0d48,
-      0x0d4a, 0x0d4c,
-      0x0d57, 0x0d57,
-      0x0d82, 0x0d83,
-      0x0dcf, 0x0dd1,
-      0x0dd8, 0x0ddf,
-      0x0df2, 0x0df3,
-      0x0f3e, 0x0f3f,
-      0x0f7f, 0x0f7f,
-      0x102c, 0x102c,
-      0x1031, 0x1031,
-      0x1038, 0x1038,
-      0x1056, 0x1057,
-      0x17b6, 0x17b6,
-      0x17be, 0x17c5,
-      0x17c7, 0x17c8,
-      0x1923, 0x1926,
-      0x1929, 0x192b,
-      0x1930, 0x1931,
-      0x1933, 0x1938,
-      0x19b0, 0x19c0,
-      0x19c8, 0x19c9,
-      0x1a19, 0x1a1b,
-      0xa802, 0xa802,
-      0xa823, 0xa824,
-      0xa827, 0xa827,
-      0x1d165, 0x1d166,
-      0x1d16d, 0x1d172
-    } : null; /* CR_Mc */
-
-    /* 'Me': General Category */
-    static final int CR_Me[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      4,
-      0x0488, 0x0489,
-      0x06de, 0x06de,
-      0x20dd, 0x20e0,
-      0x20e2, 0x20e4
-    } : null; /* CR_Me */
-
-    /* 'Mn': General Category */
-    static final int CR_Mn[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      124,
-      0x0300, 0x036f,
-      0x0483, 0x0486,
-      0x0591, 0x05b9,
-      0x05bb, 0x05bd,
-      0x05bf, 0x05bf,
-      0x05c1, 0x05c2,
-      0x05c4, 0x05c5,
-      0x05c7, 0x05c7,
-      0x0610, 0x0615,
-      0x064b, 0x065e,
-      0x0670, 0x0670,
-      0x06d6, 0x06dc,
-      0x06df, 0x06e4,
-      0x06e7, 0x06e8,
-      0x06ea, 0x06ed,
-      0x0711, 0x0711,
-      0x0730, 0x074a,
-      0x07a6, 0x07b0,
-      0x0901, 0x0902,
-      0x093c, 0x093c,
-      0x0941, 0x0948,
-      0x094d, 0x094d,
-      0x0951, 0x0954,
-      0x0962, 0x0963,
-      0x0981, 0x0981,
-      0x09bc, 0x09bc,
-      0x09c1, 0x09c4,
-      0x09cd, 0x09cd,
-      0x09e2, 0x09e3,
-      0x0a01, 0x0a02,
-      0x0a3c, 0x0a3c,
-      0x0a41, 0x0a42,
-      0x0a47, 0x0a48,
-      0x0a4b, 0x0a4d,
-      0x0a70, 0x0a71,
-      0x0a81, 0x0a82,
-      0x0abc, 0x0abc,
-      0x0ac1, 0x0ac5,
-      0x0ac7, 0x0ac8,
-      0x0acd, 0x0acd,
-      0x0ae2, 0x0ae3,
-      0x0b01, 0x0b01,
-      0x0b3c, 0x0b3c,
-      0x0b3f, 0x0b3f,
-      0x0b41, 0x0b43,
-      0x0b4d, 0x0b4d,
-      0x0b56, 0x0b56,
-      0x0b82, 0x0b82,
-      0x0bc0, 0x0bc0,
-      0x0bcd, 0x0bcd,
-      0x0c3e, 0x0c40,
-      0x0c46, 0x0c48,
-      0x0c4a, 0x0c4d,
-      0x0c55, 0x0c56,
-      0x0cbc, 0x0cbc,
-      0x0cbf, 0x0cbf,
-      0x0cc6, 0x0cc6,
-      0x0ccc, 0x0ccd,
-      0x0d41, 0x0d43,
-      0x0d4d, 0x0d4d,
-      0x0dca, 0x0dca,
-      0x0dd2, 0x0dd4,
-      0x0dd6, 0x0dd6,
-      0x0e31, 0x0e31,
-      0x0e34, 0x0e3a,
-      0x0e47, 0x0e4e,
-      0x0eb1, 0x0eb1,
-      0x0eb4, 0x0eb9,
-      0x0ebb, 0x0ebc,
-      0x0ec8, 0x0ecd,
-      0x0f18, 0x0f19,
-      0x0f35, 0x0f35,
-      0x0f37, 0x0f37,
-      0x0f39, 0x0f39,
-      0x0f71, 0x0f7e,
-      0x0f80, 0x0f84,
-      0x0f86, 0x0f87,
-      0x0f90, 0x0f97,
-      0x0f99, 0x0fbc,
-      0x0fc6, 0x0fc6,
-      0x102d, 0x1030,
-      0x1032, 0x1032,
-      0x1036, 0x1037,
-      0x1039, 0x1039,
-      0x1058, 0x1059,
-      0x135f, 0x135f,
-      0x1712, 0x1714,
-      0x1732, 0x1734,
-      0x1752, 0x1753,
-      0x1772, 0x1773,
-      0x17b7, 0x17bd,
-      0x17c6, 0x17c6,
-      0x17c9, 0x17d3,
-      0x17dd, 0x17dd,
-      0x180b, 0x180d,
-      0x18a9, 0x18a9,
-      0x1920, 0x1922,
-      0x1927, 0x1928,
-      0x1932, 0x1932,
-      0x1939, 0x193b,
-      0x1a17, 0x1a18,
-      0x1dc0, 0x1dc3,
-      0x20d0, 0x20dc,
-      0x20e1, 0x20e1,
-      0x20e5, 0x20eb,
-      0x302a, 0x302f,
-      0x3099, 0x309a,
-      0xa806, 0xa806,
-      0xa80b, 0xa80b,
-      0xa825, 0xa826,
-      0xfb1e, 0xfb1e,
-      0xfe00, 0xfe0f,
-      0xfe20, 0xfe23,
-      0x10a01, 0x10a03,
-      0x10a05, 0x10a06,
-      0x10a0c, 0x10a0f,
-      0x10a38, 0x10a3a,
-      0x10a3f, 0x10a3f,
-      0x1d167, 0x1d169,
-      0x1d17b, 0x1d182,
-      0x1d185, 0x1d18b,
-      0x1d1aa, 0x1d1ad,
-      0x1d242, 0x1d244,
-      0xe0100, 0xe01ef
-    } : null; /* CR_Mn */
-
-    /* 'N': Major Category */
-    static final int CR_N[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      53,
-      0x0030, 0x0039,
-      0x00b2, 0x00b3,
-      0x00b9, 0x00b9,
-      0x00bc, 0x00be,
-      0x0660, 0x0669,
-      0x06f0, 0x06f9,
-      0x0966, 0x096f,
-      0x09e6, 0x09ef,
-      0x09f4, 0x09f9,
-      0x0a66, 0x0a6f,
-      0x0ae6, 0x0aef,
-      0x0b66, 0x0b6f,
-      0x0be6, 0x0bf2,
-      0x0c66, 0x0c6f,
-      0x0ce6, 0x0cef,
-      0x0d66, 0x0d6f,
-      0x0e50, 0x0e59,
-      0x0ed0, 0x0ed9,
-      0x0f20, 0x0f33,
-      0x1040, 0x1049,
-      0x1369, 0x137c,
-      0x16ee, 0x16f0,
-      0x17e0, 0x17e9,
-      0x17f0, 0x17f9,
-      0x1810, 0x1819,
-      0x1946, 0x194f,
-      0x19d0, 0x19d9,
-      0x2070, 0x2070,
-      0x2074, 0x2079,
-      0x2080, 0x2089,
-      0x2153, 0x2183,
-      0x2460, 0x249b,
-      0x24ea, 0x24ff,
-      0x2776, 0x2793,
-      0x2cfd, 0x2cfd,
-      0x3007, 0x3007,
-      0x3021, 0x3029,
-      0x3038, 0x303a,
-      0x3192, 0x3195,
-      0x3220, 0x3229,
-      0x3251, 0x325f,
-      0x3280, 0x3289,
-      0x32b1, 0x32bf,
-      0xff10, 0xff19,
-      0x10107, 0x10133,
-      0x10140, 0x10178,
-      0x1018a, 0x1018a,
-      0x10320, 0x10323,
-      0x1034a, 0x1034a,
-      0x103d1, 0x103d5,
-      0x104a0, 0x104a9,
-      0x10a40, 0x10a47,
-      0x1d7ce, 0x1d7ff
-    } : null; /* CR_N */
-
-    /* 'Nd': General Category */
-    static final int CR_Nd[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      23,
-      0x0030, 0x0039,
-      0x0660, 0x0669,
-      0x06f0, 0x06f9,
-      0x0966, 0x096f,
-      0x09e6, 0x09ef,
-      0x0a66, 0x0a6f,
-      0x0ae6, 0x0aef,
-      0x0b66, 0x0b6f,
-      0x0be6, 0x0bef,
-      0x0c66, 0x0c6f,
-      0x0ce6, 0x0cef,
-      0x0d66, 0x0d6f,
-      0x0e50, 0x0e59,
-      0x0ed0, 0x0ed9,
-      0x0f20, 0x0f29,
-      0x1040, 0x1049,
-      0x17e0, 0x17e9,
-      0x1810, 0x1819,
-      0x1946, 0x194f,
-      0x19d0, 0x19d9,
-      0xff10, 0xff19,
-      0x104a0, 0x104a9,
-      0x1d7ce, 0x1d7ff
-    } : null; /* CR_Nd */
-
-    /* 'Nl': General Category */
-    static final int CR_Nl[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      8,
-      0x16ee, 0x16f0,
-      0x2160, 0x2183,
-      0x3007, 0x3007,
-      0x3021, 0x3029,
-      0x3038, 0x303a,
-      0x10140, 0x10174,
-      0x1034a, 0x1034a,
-      0x103d1, 0x103d5
-    } : null; /* CR_Nl */
-
-    /* 'No': General Category */
-    static final int CR_No[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      26,
-      0x00b2, 0x00b3,
-      0x00b9, 0x00b9,
-      0x00bc, 0x00be,
-      0x09f4, 0x09f9,
-      0x0bf0, 0x0bf2,
-      0x0f2a, 0x0f33,
-      0x1369, 0x137c,
-      0x17f0, 0x17f9,
-      0x2070, 0x2070,
-      0x2074, 0x2079,
-      0x2080, 0x2089,
-      0x2153, 0x215f,
-      0x2460, 0x249b,
-      0x24ea, 0x24ff,
-      0x2776, 0x2793,
-      0x2cfd, 0x2cfd,
-      0x3192, 0x3195,
-      0x3220, 0x3229,
-      0x3251, 0x325f,
-      0x3280, 0x3289,
-      0x32b1, 0x32bf,
-      0x10107, 0x10133,
-      0x10175, 0x10178,
-      0x1018a, 0x1018a,
-      0x10320, 0x10323,
-      0x10a40, 0x10a47
-    } : null; /* CR_No */
-
-    /* 'P': Major Category */
-    static final int CR_P[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      96,
-      0x0021, 0x0023,
-      0x0025, 0x002a,
-      0x002c, 0x002f,
-      0x003a, 0x003b,
-      0x003f, 0x0040,
-      0x005b, 0x005d,
-      0x005f, 0x005f,
-      0x007b, 0x007b,
-      0x007d, 0x007d,
-      0x00a1, 0x00a1,
-      0x00ab, 0x00ab,
-      0x00b7, 0x00b7,
-      0x00bb, 0x00bb,
-      0x00bf, 0x00bf,
-      0x037e, 0x037e,
-      0x0387, 0x0387,
-      0x055a, 0x055f,
-      0x0589, 0x058a,
-      0x05be, 0x05be,
-      0x05c0, 0x05c0,
-      0x05c3, 0x05c3,
-      0x05c6, 0x05c6,
-      0x05f3, 0x05f4,
-      0x060c, 0x060d,
-      0x061b, 0x061b,
-      0x061e, 0x061f,
-      0x066a, 0x066d,
-      0x06d4, 0x06d4,
-      0x0700, 0x070d,
-      0x0964, 0x0965,
-      0x0970, 0x0970,
-      0x0df4, 0x0df4,
-      0x0e4f, 0x0e4f,
-      0x0e5a, 0x0e5b,
-      0x0f04, 0x0f12,
-      0x0f3a, 0x0f3d,
-      0x0f85, 0x0f85,
-      0x0fd0, 0x0fd1,
-      0x104a, 0x104f,
-      0x10fb, 0x10fb,
-      0x1361, 0x1368,
-      0x166d, 0x166e,
-      0x169b, 0x169c,
-      0x16eb, 0x16ed,
-      0x1735, 0x1736,
-      0x17d4, 0x17d6,
-      0x17d8, 0x17da,
-      0x1800, 0x180a,
-      0x1944, 0x1945,
-      0x19de, 0x19df,
-      0x1a1e, 0x1a1f,
-      0x2010, 0x2027,
-      0x2030, 0x2043,
-      0x2045, 0x2051,
-      0x2053, 0x205e,
-      0x207d, 0x207e,
-      0x208d, 0x208e,
-      0x2329, 0x232a,
-      0x23b4, 0x23b6,
-      0x2768, 0x2775,
-      0x27c5, 0x27c6,
-      0x27e6, 0x27eb,
-      0x2983, 0x2998,
-      0x29d8, 0x29db,
-      0x29fc, 0x29fd,
-      0x2cf9, 0x2cfc,
-      0x2cfe, 0x2cff,
-      0x2e00, 0x2e17,
-      0x2e1c, 0x2e1d,
-      0x3001, 0x3003,
-      0x3008, 0x3011,
-      0x3014, 0x301f,
-      0x3030, 0x3030,
-      0x303d, 0x303d,
-      0x30a0, 0x30a0,
-      0x30fb, 0x30fb,
-      0xfd3e, 0xfd3f,
-      0xfe10, 0xfe19,
-      0xfe30, 0xfe52,
-      0xfe54, 0xfe61,
-      0xfe63, 0xfe63,
-      0xfe68, 0xfe68,
-      0xfe6a, 0xfe6b,
-      0xff01, 0xff03,
-      0xff05, 0xff0a,
-      0xff0c, 0xff0f,
-      0xff1a, 0xff1b,
-      0xff1f, 0xff20,
-      0xff3b, 0xff3d,
-      0xff3f, 0xff3f,
-      0xff5b, 0xff5b,
-      0xff5d, 0xff5d,
-      0xff5f, 0xff65,
-      0x10100, 0x10101,
-      0x1039f, 0x1039f,
-      0x10a50, 0x10a58
-    } : null; /* CR_P */
-
-    /* 'Pc': General Category */
-    static final int CR_Pc[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      6,
-      0x005f, 0x005f,
-      0x203f, 0x2040,
-      0x2054, 0x2054,
-      0xfe33, 0xfe34,
-      0xfe4d, 0xfe4f,
-      0xff3f, 0xff3f
-    } : null; /* CR_Pc */
-
-    /* 'Pd': General Category */
-    static final int CR_Pd[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      12,
-      0x002d, 0x002d,
-      0x058a, 0x058a,
-      0x1806, 0x1806,
-      0x2010, 0x2015,
-      0x2e17, 0x2e17,
-      0x301c, 0x301c,
-      0x3030, 0x3030,
-      0x30a0, 0x30a0,
-      0xfe31, 0xfe32,
-      0xfe58, 0xfe58,
-      0xfe63, 0xfe63,
-      0xff0d, 0xff0d
-    } : null; /* CR_Pd */
-
-    /* 'Pe': General Category */
-    static final int CR_Pe[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      65,
-      0x0029, 0x0029,
-      0x005d, 0x005d,
-      0x007d, 0x007d,
-      0x0f3b, 0x0f3b,
-      0x0f3d, 0x0f3d,
-      0x169c, 0x169c,
-      0x2046, 0x2046,
-      0x207e, 0x207e,
-      0x208e, 0x208e,
-      0x232a, 0x232a,
-      0x23b5, 0x23b5,
-      0x2769, 0x2769,
-      0x276b, 0x276b,
-      0x276d, 0x276d,
-      0x276f, 0x276f,
-      0x2771, 0x2771,
-      0x2773, 0x2773,
-      0x2775, 0x2775,
-      0x27c6, 0x27c6,
-      0x27e7, 0x27e7,
-      0x27e9, 0x27e9,
-      0x27eb, 0x27eb,
-      0x2984, 0x2984,
-      0x2986, 0x2986,
-      0x2988, 0x2988,
-      0x298a, 0x298a,
-      0x298c, 0x298c,
-      0x298e, 0x298e,
-      0x2990, 0x2990,
-      0x2992, 0x2992,
-      0x2994, 0x2994,
-      0x2996, 0x2996,
-      0x2998, 0x2998,
-      0x29d9, 0x29d9,
-      0x29db, 0x29db,
-      0x29fd, 0x29fd,
-      0x3009, 0x3009,
-      0x300b, 0x300b,
-      0x300d, 0x300d,
-      0x300f, 0x300f,
-      0x3011, 0x3011,
-      0x3015, 0x3015,
-      0x3017, 0x3017,
-      0x3019, 0x3019,
-      0x301b, 0x301b,
-      0x301e, 0x301f,
-      0xfd3f, 0xfd3f,
-      0xfe18, 0xfe18,
-      0xfe36, 0xfe36,
-      0xfe38, 0xfe38,
-      0xfe3a, 0xfe3a,
-      0xfe3c, 0xfe3c,
-      0xfe3e, 0xfe3e,
-      0xfe40, 0xfe40,
-      0xfe42, 0xfe42,
-      0xfe44, 0xfe44,
-      0xfe48, 0xfe48,
-      0xfe5a, 0xfe5a,
-      0xfe5c, 0xfe5c,
-      0xfe5e, 0xfe5e,
-      0xff09, 0xff09,
-      0xff3d, 0xff3d,
-      0xff5d, 0xff5d,
-      0xff60, 0xff60,
-      0xff63, 0xff63
-    } : null; /* CR_Pe */
-
-    /* 'Pf': General Category */
-    static final int CR_Pf[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      9,
-      0x00bb, 0x00bb,
-      0x2019, 0x2019,
-      0x201d, 0x201d,
-      0x203a, 0x203a,
-      0x2e03, 0x2e03,
-      0x2e05, 0x2e05,
-      0x2e0a, 0x2e0a,
-      0x2e0d, 0x2e0d,
-      0x2e1d, 0x2e1d
-    } : null; /* CR_Pf */
-
-    /* 'Pi': General Category */
-    static final int CR_Pi[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      10,
-      0x00ab, 0x00ab,
-      0x2018, 0x2018,
-      0x201b, 0x201c,
-      0x201f, 0x201f,
-      0x2039, 0x2039,
-      0x2e02, 0x2e02,
-      0x2e04, 0x2e04,
-      0x2e09, 0x2e09,
-      0x2e0c, 0x2e0c,
-      0x2e1c, 0x2e1c
-    } : null; /* CR_Pi */
-
-    /* 'Po': General Category */
-    static final int CR_Po[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      88,
-      0x0021, 0x0023,
-      0x0025, 0x0027,
-      0x002a, 0x002a,
-      0x002c, 0x002c,
-      0x002e, 0x002f,
-      0x003a, 0x003b,
-      0x003f, 0x0040,
-      0x005c, 0x005c,
-      0x00a1, 0x00a1,
-      0x00b7, 0x00b7,
-      0x00bf, 0x00bf,
-      0x037e, 0x037e,
-      0x0387, 0x0387,
-      0x055a, 0x055f,
-      0x0589, 0x0589,
-      0x05be, 0x05be,
-      0x05c0, 0x05c0,
-      0x05c3, 0x05c3,
-      0x05c6, 0x05c6,
-      0x05f3, 0x05f4,
-      0x060c, 0x060d,
-      0x061b, 0x061b,
-      0x061e, 0x061f,
-      0x066a, 0x066d,
-      0x06d4, 0x06d4,
-      0x0700, 0x070d,
-      0x0964, 0x0965,
-      0x0970, 0x0970,
-      0x0df4, 0x0df4,
-      0x0e4f, 0x0e4f,
-      0x0e5a, 0x0e5b,
-      0x0f04, 0x0f12,
-      0x0f85, 0x0f85,
-      0x0fd0, 0x0fd1,
-      0x104a, 0x104f,
-      0x10fb, 0x10fb,
-      0x1361, 0x1368,
-      0x166d, 0x166e,
-      0x16eb, 0x16ed,
-      0x1735, 0x1736,
-      0x17d4, 0x17d6,
-      0x17d8, 0x17da,
-      0x1800, 0x1805,
-      0x1807, 0x180a,
-      0x1944, 0x1945,
-      0x19de, 0x19df,
-      0x1a1e, 0x1a1f,
-      0x2016, 0x2017,
-      0x2020, 0x2027,
-      0x2030, 0x2038,
-      0x203b, 0x203e,
-      0x2041, 0x2043,
-      0x2047, 0x2051,
-      0x2053, 0x2053,
-      0x2055, 0x205e,
-      0x23b6, 0x23b6,
-      0x2cf9, 0x2cfc,
-      0x2cfe, 0x2cff,
-      0x2e00, 0x2e01,
-      0x2e06, 0x2e08,
-      0x2e0b, 0x2e0b,
-      0x2e0e, 0x2e16,
-      0x3001, 0x3003,
-      0x303d, 0x303d,
-      0x30fb, 0x30fb,
-      0xfe10, 0xfe16,
-      0xfe19, 0xfe19,
-      0xfe30, 0xfe30,
-      0xfe45, 0xfe46,
-      0xfe49, 0xfe4c,
-      0xfe50, 0xfe52,
-      0xfe54, 0xfe57,
-      0xfe5f, 0xfe61,
-      0xfe68, 0xfe68,
-      0xfe6a, 0xfe6b,
-      0xff01, 0xff03,
-      0xff05, 0xff07,
-      0xff0a, 0xff0a,
-      0xff0c, 0xff0c,
-      0xff0e, 0xff0f,
-      0xff1a, 0xff1b,
-      0xff1f, 0xff20,
-      0xff3c, 0xff3c,
-      0xff61, 0xff61,
-      0xff64, 0xff65,
-      0x10100, 0x10101,
-      0x1039f, 0x1039f,
-      0x10a50, 0x10a58
-    } : null; /* CR_Po */
-
-    /* 'Ps': General Category */
-    static final int CR_Ps[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      67,
-      0x0028, 0x0028,
-      0x005b, 0x005b,
-      0x007b, 0x007b,
-      0x0f3a, 0x0f3a,
-      0x0f3c, 0x0f3c,
-      0x169b, 0x169b,
-      0x201a, 0x201a,
-      0x201e, 0x201e,
-      0x2045, 0x2045,
-      0x207d, 0x207d,
-      0x208d, 0x208d,
-      0x2329, 0x2329,
-      0x23b4, 0x23b4,
-      0x2768, 0x2768,
-      0x276a, 0x276a,
-      0x276c, 0x276c,
-      0x276e, 0x276e,
-      0x2770, 0x2770,
-      0x2772, 0x2772,
-      0x2774, 0x2774,
-      0x27c5, 0x27c5,
-      0x27e6, 0x27e6,
-      0x27e8, 0x27e8,
-      0x27ea, 0x27ea,
-      0x2983, 0x2983,
-      0x2985, 0x2985,
-      0x2987, 0x2987,
-      0x2989, 0x2989,
-      0x298b, 0x298b,
-      0x298d, 0x298d,
-      0x298f, 0x298f,
-      0x2991, 0x2991,
-      0x2993, 0x2993,
-      0x2995, 0x2995,
-      0x2997, 0x2997,
-      0x29d8, 0x29d8,
-      0x29da, 0x29da,
-      0x29fc, 0x29fc,
-      0x3008, 0x3008,
-      0x300a, 0x300a,
-      0x300c, 0x300c,
-      0x300e, 0x300e,
-      0x3010, 0x3010,
-      0x3014, 0x3014,
-      0x3016, 0x3016,
-      0x3018, 0x3018,
-      0x301a, 0x301a,
-      0x301d, 0x301d,
-      0xfd3e, 0xfd3e,
-      0xfe17, 0xfe17,
-      0xfe35, 0xfe35,
-      0xfe37, 0xfe37,
-      0xfe39, 0xfe39,
-      0xfe3b, 0xfe3b,
-      0xfe3d, 0xfe3d,
-      0xfe3f, 0xfe3f,
-      0xfe41, 0xfe41,
-      0xfe43, 0xfe43,
-      0xfe47, 0xfe47,
-      0xfe59, 0xfe59,
-      0xfe5b, 0xfe5b,
-      0xfe5d, 0xfe5d,
-      0xff08, 0xff08,
-      0xff3b, 0xff3b,
-      0xff5b, 0xff5b,
-      0xff5f, 0xff5f,
-      0xff62, 0xff62
-    } : null; /* CR_Ps */
-
-    /* 'S': Major Category */
-    static final int CR_S[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      162,
-      0x0024, 0x0024,
-      0x002b, 0x002b,
-      0x003c, 0x003e,
-      0x005e, 0x005e,
-      0x0060, 0x0060,
-      0x007c, 0x007c,
-      0x007e, 0x007e,
-      0x00a2, 0x00a9,
-      0x00ac, 0x00ac,
-      0x00ae, 0x00b1,
-      0x00b4, 0x00b4,
-      0x00b6, 0x00b6,
-      0x00b8, 0x00b8,
-      0x00d7, 0x00d7,
-      0x00f7, 0x00f7,
-      0x02c2, 0x02c5,
-      0x02d2, 0x02df,
-      0x02e5, 0x02ed,
-      0x02ef, 0x02ff,
-      0x0374, 0x0375,
-      0x0384, 0x0385,
-      0x03f6, 0x03f6,
-      0x0482, 0x0482,
-      0x060b, 0x060b,
-      0x060e, 0x060f,
-      0x06e9, 0x06e9,
-      0x06fd, 0x06fe,
-      0x09f2, 0x09f3,
-      0x09fa, 0x09fa,
-      0x0af1, 0x0af1,
-      0x0b70, 0x0b70,
-      0x0bf3, 0x0bfa,
-      0x0e3f, 0x0e3f,
-      0x0f01, 0x0f03,
-      0x0f13, 0x0f17,
-      0x0f1a, 0x0f1f,
-      0x0f34, 0x0f34,
-      0x0f36, 0x0f36,
-      0x0f38, 0x0f38,
-      0x0fbe, 0x0fc5,
-      0x0fc7, 0x0fcc,
-      0x0fcf, 0x0fcf,
-      0x1360, 0x1360,
-      0x1390, 0x1399,
-      0x17db, 0x17db,
-      0x1940, 0x1940,
-      0x19e0, 0x19ff,
-      0x1fbd, 0x1fbd,
-      0x1fbf, 0x1fc1,
-      0x1fcd, 0x1fcf,
-      0x1fdd, 0x1fdf,
-      0x1fed, 0x1fef,
-      0x1ffd, 0x1ffe,
-      0x2044, 0x2044,
-      0x2052, 0x2052,
-      0x207a, 0x207c,
-      0x208a, 0x208c,
-      0x20a0, 0x20b5,
-      0x2100, 0x2101,
-      0x2103, 0x2106,
-      0x2108, 0x2109,
-      0x2114, 0x2114,
-      0x2116, 0x2118,
-      0x211e, 0x2123,
-      0x2125, 0x2125,
-      0x2127, 0x2127,
-      0x2129, 0x2129,
-      0x212e, 0x212e,
-      0x2132, 0x2132,
-      0x213a, 0x213b,
-      0x2140, 0x2144,
-      0x214a, 0x214c,
-      0x2190, 0x2328,
-      0x232b, 0x23b3,
-      0x23b7, 0x23db,
-      0x2400, 0x2426,
-      0x2440, 0x244a,
-      0x249c, 0x24e9,
-      0x2500, 0x269c,
-      0x26a0, 0x26b1,
-      0x2701, 0x2704,
-      0x2706, 0x2709,
-      0x270c, 0x2727,
-      0x2729, 0x274b,
-      0x274d, 0x274d,
-      0x274f, 0x2752,
-      0x2756, 0x2756,
-      0x2758, 0x275e,
-      0x2761, 0x2767,
-      0x2794, 0x2794,
-      0x2798, 0x27af,
-      0x27b1, 0x27be,
-      0x27c0, 0x27c4,
-      0x27d0, 0x27e5,
-      0x27f0, 0x2982,
-      0x2999, 0x29d7,
-      0x29dc, 0x29fb,
-      0x29fe, 0x2b13,
-      0x2ce5, 0x2cea,
-      0x2e80, 0x2e99,
-      0x2e9b, 0x2ef3,
-      0x2f00, 0x2fd5,
-      0x2ff0, 0x2ffb,
-      0x3004, 0x3004,
-      0x3012, 0x3013,
-      0x3020, 0x3020,
-      0x3036, 0x3037,
-      0x303e, 0x303f,
-      0x309b, 0x309c,
-      0x3190, 0x3191,
-      0x3196, 0x319f,
-      0x31c0, 0x31cf,
-      0x3200, 0x321e,
-      0x322a, 0x3243,
-      0x3250, 0x3250,
-      0x3260, 0x327f,
-      0x328a, 0x32b0,
-      0x32c0, 0x32fe,
-      0x3300, 0x33ff,
-      0x4dc0, 0x4dff,
-      0xa490, 0xa4c6,
-      0xa700, 0xa716,
-      0xa828, 0xa82b,
-      0xfb29, 0xfb29,
-      0xfdfc, 0xfdfd,
-      0xfe62, 0xfe62,
-      0xfe64, 0xfe66,
-      0xfe69, 0xfe69,
-      0xff04, 0xff04,
-      0xff0b, 0xff0b,
-      0xff1c, 0xff1e,
-      0xff3e, 0xff3e,
-      0xff40, 0xff40,
-      0xff5c, 0xff5c,
-      0xff5e, 0xff5e,
-      0xffe0, 0xffe6,
-      0xffe8, 0xffee,
-      0xfffc, 0xfffd,
-      0x10102, 0x10102,
-      0x10137, 0x1013f,
-      0x10179, 0x10189,
-      0x103d0, 0x103d0,
-      0x1d000, 0x1d0f5,
-      0x1d100, 0x1d126,
-      0x1d12a, 0x1d164,
-      0x1d16a, 0x1d16c,
-      0x1d183, 0x1d184,
-      0x1d18c, 0x1d1a9,
-      0x1d1ae, 0x1d1dd,
-      0x1d200, 0x1d241,
-      0x1d245, 0x1d245,
-      0x1d300, 0x1d356,
-      0x1d6c1, 0x1d6c1,
-      0x1d6db, 0x1d6db,
-      0x1d6fb, 0x1d6fb,
-      0x1d715, 0x1d715,
-      0x1d735, 0x1d735,
-      0x1d74f, 0x1d74f,
-      0x1d76f, 0x1d76f,
-      0x1d789, 0x1d789,
-      0x1d7a9, 0x1d7a9,
-      0x1d7c3, 0x1d7c3
-    } : null; /* CR_S */
-
-    /* 'Sc': General Category */
-    static final int CR_Sc[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      14,
-      0x0024, 0x0024,
-      0x00a2, 0x00a5,
-      0x060b, 0x060b,
-      0x09f2, 0x09f3,
-      0x0af1, 0x0af1,
-      0x0bf9, 0x0bf9,
-      0x0e3f, 0x0e3f,
-      0x17db, 0x17db,
-      0x20a0, 0x20b5,
-      0xfdfc, 0xfdfc,
-      0xfe69, 0xfe69,
-      0xff04, 0xff04,
-      0xffe0, 0xffe1,
-      0xffe5, 0xffe6
-    } : null; /* CR_Sc */
-
-    /* 'Sk': General Category */
-    static final int CR_Sk[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      23,
-      0x005e, 0x005e,
-      0x0060, 0x0060,
-      0x00a8, 0x00a8,
-      0x00af, 0x00af,
-      0x00b4, 0x00b4,
-      0x00b8, 0x00b8,
-      0x02c2, 0x02c5,
-      0x02d2, 0x02df,
-      0x02e5, 0x02ed,
-      0x02ef, 0x02ff,
-      0x0374, 0x0375,
-      0x0384, 0x0385,
-      0x1fbd, 0x1fbd,
-      0x1fbf, 0x1fc1,
-      0x1fcd, 0x1fcf,
-      0x1fdd, 0x1fdf,
-      0x1fed, 0x1fef,
-      0x1ffd, 0x1ffe,
-      0x309b, 0x309c,
-      0xa700, 0xa716,
-      0xff3e, 0xff3e,
-      0xff40, 0xff40,
-      0xffe3, 0xffe3
-    } : null; /* CR_Sk */
-
-    /* 'Sm': General Category */
-    static final int CR_Sm[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      59,
-      0x002b, 0x002b,
-      0x003c, 0x003e,
-      0x007c, 0x007c,
-      0x007e, 0x007e,
-      0x00ac, 0x00ac,
-      0x00b1, 0x00b1,
-      0x00d7, 0x00d7,
-      0x00f7, 0x00f7,
-      0x03f6, 0x03f6,
-      0x2044, 0x2044,
-      0x2052, 0x2052,
-      0x207a, 0x207c,
-      0x208a, 0x208c,
-      0x2140, 0x2144,
-      0x214b, 0x214b,
-      0x2190, 0x2194,
-      0x219a, 0x219b,
-      0x21a0, 0x21a0,
-      0x21a3, 0x21a3,
-      0x21a6, 0x21a6,
-      0x21ae, 0x21ae,
-      0x21ce, 0x21cf,
-      0x21d2, 0x21d2,
-      0x21d4, 0x21d4,
-      0x21f4, 0x22ff,
-      0x2308, 0x230b,
-      0x2320, 0x2321,
-      0x237c, 0x237c,
-      0x239b, 0x23b3,
-      0x25b7, 0x25b7,
-      0x25c1, 0x25c1,
-      0x25f8, 0x25ff,
-      0x266f, 0x266f,
-      0x27c0, 0x27c4,
-      0x27d0, 0x27e5,
-      0x27f0, 0x27ff,
-      0x2900, 0x2982,
-      0x2999, 0x29d7,
-      0x29dc, 0x29fb,
-      0x29fe, 0x2aff,
-      0xfb29, 0xfb29,
-      0xfe62, 0xfe62,
-      0xfe64, 0xfe66,
-      0xff0b, 0xff0b,
-      0xff1c, 0xff1e,
-      0xff5c, 0xff5c,
-      0xff5e, 0xff5e,
-      0xffe2, 0xffe2,
-      0xffe9, 0xffec,
-      0x1d6c1, 0x1d6c1,
-      0x1d6db, 0x1d6db,
-      0x1d6fb, 0x1d6fb,
-      0x1d715, 0x1d715,
-      0x1d735, 0x1d735,
-      0x1d74f, 0x1d74f,
-      0x1d76f, 0x1d76f,
-      0x1d789, 0x1d789,
-      0x1d7a9, 0x1d7a9,
-      0x1d7c3, 0x1d7c3
-    } : null; /* CR_Sm */
-
-    /* 'So': General Category */
-    static final int CR_So[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      120,
-      0x00a6, 0x00a7,
-      0x00a9, 0x00a9,
-      0x00ae, 0x00ae,
-      0x00b0, 0x00b0,
-      0x00b6, 0x00b6,
-      0x0482, 0x0482,
-      0x060e, 0x060f,
-      0x06e9, 0x06e9,
-      0x06fd, 0x06fe,
-      0x09fa, 0x09fa,
-      0x0b70, 0x0b70,
-      0x0bf3, 0x0bf8,
-      0x0bfa, 0x0bfa,
-      0x0f01, 0x0f03,
-      0x0f13, 0x0f17,
-      0x0f1a, 0x0f1f,
-      0x0f34, 0x0f34,
-      0x0f36, 0x0f36,
-      0x0f38, 0x0f38,
-      0x0fbe, 0x0fc5,
-      0x0fc7, 0x0fcc,
-      0x0fcf, 0x0fcf,
-      0x1360, 0x1360,
-      0x1390, 0x1399,
-      0x1940, 0x1940,
-      0x19e0, 0x19ff,
-      0x2100, 0x2101,
-      0x2103, 0x2106,
-      0x2108, 0x2109,
-      0x2114, 0x2114,
-      0x2116, 0x2118,
-      0x211e, 0x2123,
-      0x2125, 0x2125,
-      0x2127, 0x2127,
-      0x2129, 0x2129,
-      0x212e, 0x212e,
-      0x2132, 0x2132,
-      0x213a, 0x213b,
-      0x214a, 0x214a,
-      0x214c, 0x214c,
-      0x2195, 0x2199,
-      0x219c, 0x219f,
-      0x21a1, 0x21a2,
-      0x21a4, 0x21a5,
-      0x21a7, 0x21ad,
-      0x21af, 0x21cd,
-      0x21d0, 0x21d1,
-      0x21d3, 0x21d3,
-      0x21d5, 0x21f3,
-      0x2300, 0x2307,
-      0x230c, 0x231f,
-      0x2322, 0x2328,
-      0x232b, 0x237b,
-      0x237d, 0x239a,
-      0x23b7, 0x23db,
-      0x2400, 0x2426,
-      0x2440, 0x244a,
-      0x249c, 0x24e9,
-      0x2500, 0x25b6,
-      0x25b8, 0x25c0,
-      0x25c2, 0x25f7,
-      0x2600, 0x266e,
-      0x2670, 0x269c,
-      0x26a0, 0x26b1,
-      0x2701, 0x2704,
-      0x2706, 0x2709,
-      0x270c, 0x2727,
-      0x2729, 0x274b,
-      0x274d, 0x274d,
-      0x274f, 0x2752,
-      0x2756, 0x2756,
-      0x2758, 0x275e,
-      0x2761, 0x2767,
-      0x2794, 0x2794,
-      0x2798, 0x27af,
-      0x27b1, 0x27be,
-      0x2800, 0x28ff,
-      0x2b00, 0x2b13,
-      0x2ce5, 0x2cea,
-      0x2e80, 0x2e99,
-      0x2e9b, 0x2ef3,
-      0x2f00, 0x2fd5,
-      0x2ff0, 0x2ffb,
-      0x3004, 0x3004,
-      0x3012, 0x3013,
-      0x3020, 0x3020,
-      0x3036, 0x3037,
-      0x303e, 0x303f,
-      0x3190, 0x3191,
-      0x3196, 0x319f,
-      0x31c0, 0x31cf,
-      0x3200, 0x321e,
-      0x322a, 0x3243,
-      0x3250, 0x3250,
-      0x3260, 0x327f,
-      0x328a, 0x32b0,
-      0x32c0, 0x32fe,
-      0x3300, 0x33ff,
-      0x4dc0, 0x4dff,
-      0xa490, 0xa4c6,
-      0xa828, 0xa82b,
-      0xfdfd, 0xfdfd,
-      0xffe4, 0xffe4,
-      0xffe8, 0xffe8,
-      0xffed, 0xffee,
-      0xfffc, 0xfffd,
-      0x10102, 0x10102,
-      0x10137, 0x1013f,
-      0x10179, 0x10189,
-      0x103d0, 0x103d0,
-      0x1d000, 0x1d0f5,
-      0x1d100, 0x1d126,
-      0x1d12a, 0x1d164,
-      0x1d16a, 0x1d16c,
-      0x1d183, 0x1d184,
-      0x1d18c, 0x1d1a9,
-      0x1d1ae, 0x1d1dd,
-      0x1d200, 0x1d241,
-      0x1d245, 0x1d245,
-      0x1d300, 0x1d356
-    } : null; /* CR_So */
-
-    /* 'Z': Major Category */
-    static final int CR_Z[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      9,
-      0x0020, 0x0020,
-      0x00a0, 0x00a0,
-      0x1680, 0x1680,
-      0x180e, 0x180e,
-      0x2000, 0x200a,
-      0x2028, 0x2029,
-      0x202f, 0x202f,
-      0x205f, 0x205f,
-      0x3000, 0x3000
-    } : null; /* CR_Z */
-
-    /* 'Zl': General Category */
-    static final int CR_Zl[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      1,
-      0x2028, 0x2028
-    } : null; /* CR_Zl */
-
-    /* 'Zp': General Category */
-    static final int CR_Zp[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      1,
-      0x2029, 0x2029
-    } : null; /* CR_Zp */
-
-    /* 'Zs': General Category */
-    static final int CR_Zs[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      8,
-      0x0020, 0x0020,
-      0x00a0, 0x00a0,
-      0x1680, 0x1680,
-      0x180e, 0x180e,
-      0x2000, 0x200a,
-      0x202f, 0x202f,
-      0x205f, 0x205f,
-      0x3000, 0x3000
-    } : null; /* CR_Zs */
-}
diff --git a/src/org/joni/encoding/unicode/UnicodePropertiesScripts.java b/src/org/joni/encoding/unicode/UnicodePropertiesScripts.java
deleted file mode 100644
index 841d06f..0000000
--- a/src/org/joni/encoding/unicode/UnicodePropertiesScripts.java
+++ /dev/null
@@ -1,868 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.encoding.unicode;
-
-import org.joni.Config;
-
-public interface UnicodePropertiesScripts {
-    /* 'Arabic': Script */
-    static final int CR_Arabic[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      17,
-      0x060b, 0x060b,
-      0x060d, 0x0615,
-      0x061e, 0x061e,
-      0x0621, 0x063a,
-      0x0641, 0x064a,
-      0x0656, 0x065e,
-      0x066a, 0x066f,
-      0x0671, 0x06dc,
-      0x06de, 0x06ff,
-      0x0750, 0x076d,
-      0xfb50, 0xfbb1,
-      0xfbd3, 0xfd3d,
-      0xfd50, 0xfd8f,
-      0xfd92, 0xfdc7,
-      0xfdf0, 0xfdfc,
-      0xfe70, 0xfe74,
-      0xfe76, 0xfefc
-    } : null; /* CR_Arabic */
-
-    /* 'Armenian': Script */
-    static final int CR_Armenian[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      5,
-      0x0531, 0x0556,
-      0x0559, 0x055f,
-      0x0561, 0x0587,
-      0x058a, 0x058a,
-      0xfb13, 0xfb17
-    } : null; /* CR_Armenian */
-
-    /* 'Bengali': Script */
-    static final int CR_Bengali[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      14,
-      0x0981, 0x0983,
-      0x0985, 0x098c,
-      0x098f, 0x0990,
-      0x0993, 0x09a8,
-      0x09aa, 0x09b0,
-      0x09b2, 0x09b2,
-      0x09b6, 0x09b9,
-      0x09bc, 0x09c4,
-      0x09c7, 0x09c8,
-      0x09cb, 0x09ce,
-      0x09d7, 0x09d7,
-      0x09dc, 0x09dd,
-      0x09df, 0x09e3,
-      0x09e6, 0x09fa
-    } : null; /* CR_Bengali */
-
-    /* 'Bopomofo': Script */
-    static final int CR_Bopomofo[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      2,
-      0x3105, 0x312c,
-      0x31a0, 0x31b7
-    } : null; /* CR_Bopomofo */
-
-    /* 'Braille': Script */
-    static final int CR_Braille[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      1,
-      0x2800, 0x28ff
-    } : null; /* CR_Braille */
-
-    /* 'Buginese': Script */
-    static final int CR_Buginese[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      2,
-      0x1a00, 0x1a1b,
-      0x1a1e, 0x1a1f
-    } : null; /* CR_Buginese */
-
-    /* 'Buhid': Script */
-    static final int CR_Buhid[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      1,
-      0x1740, 0x1753
-    } : null; /* CR_Buhid */
-
-    /* 'Canadian_Aboriginal': Script */
-    static final int CR_Canadian_Aboriginal[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      1,
-      0x1401, 0x1676
-    } : null; /* CR_Canadian_Aboriginal */
-
-    /* 'Cherokee': Script */
-    static final int CR_Cherokee[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      1,
-      0x13a0, 0x13f4
-    } : null; /* CR_Cherokee */
-
-    /* 'Common': Script */
-    static final int CR_Common[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      126,
-      0x0000, 0x0040,
-      0x005b, 0x0060,
-      0x007b, 0x00a9,
-      0x00ab, 0x00b9,
-      0x00bb, 0x00bf,
-      0x00d7, 0x00d7,
-      0x00f7, 0x00f7,
-      0x02b9, 0x02df,
-      0x02e5, 0x02ff,
-      0x037e, 0x037e,
-      0x0387, 0x0387,
-      0x0589, 0x0589,
-      0x0600, 0x0603,
-      0x060c, 0x060c,
-      0x061b, 0x061b,
-      0x061f, 0x061f,
-      0x0640, 0x0640,
-      0x0660, 0x0669,
-      0x06dd, 0x06dd,
-      0x0964, 0x0965,
-      0x0970, 0x0970,
-      0x0e3f, 0x0e3f,
-      0x10fb, 0x10fb,
-      0x16eb, 0x16ed,
-      0x1735, 0x1736,
-      0x2000, 0x200b,
-      0x200e, 0x2063,
-      0x206a, 0x2070,
-      0x2074, 0x207e,
-      0x2080, 0x208e,
-      0x20a0, 0x20b5,
-      0x2100, 0x2125,
-      0x2127, 0x2129,
-      0x212c, 0x214c,
-      0x2153, 0x2183,
-      0x2190, 0x23db,
-      0x2400, 0x2426,
-      0x2440, 0x244a,
-      0x2460, 0x269c,
-      0x26a0, 0x26b1,
-      0x2701, 0x2704,
-      0x2706, 0x2709,
-      0x270c, 0x2727,
-      0x2729, 0x274b,
-      0x274d, 0x274d,
-      0x274f, 0x2752,
-      0x2756, 0x2756,
-      0x2758, 0x275e,
-      0x2761, 0x2794,
-      0x2798, 0x27af,
-      0x27b1, 0x27be,
-      0x27c0, 0x27c6,
-      0x27d0, 0x27eb,
-      0x27f0, 0x27ff,
-      0x2900, 0x2b13,
-      0x2e00, 0x2e17,
-      0x2e1c, 0x2e1d,
-      0x2ff0, 0x2ffb,
-      0x3000, 0x3004,
-      0x3006, 0x3006,
-      0x3008, 0x3020,
-      0x3030, 0x3037,
-      0x303c, 0x303f,
-      0x309b, 0x309c,
-      0x30a0, 0x30a0,
-      0x30fb, 0x30fc,
-      0x3190, 0x319f,
-      0x31c0, 0x31cf,
-      0x3220, 0x3243,
-      0x3250, 0x325f,
-      0x327e, 0x32fe,
-      0x3300, 0x33ff,
-      0x4dc0, 0x4dff,
-      0xa700, 0xa716,
-      0xe000, 0xf8ff,
-      0xfd3e, 0xfd3f,
-      0xfdfd, 0xfdfd,
-      0xfe10, 0xfe19,
-      0xfe30, 0xfe52,
-      0xfe54, 0xfe66,
-      0xfe68, 0xfe6b,
-      0xfeff, 0xfeff,
-      0xff01, 0xff20,
-      0xff3b, 0xff40,
-      0xff5b, 0xff65,
-      0xff70, 0xff70,
-      0xff9e, 0xff9f,
-      0xffe0, 0xffe6,
-      0xffe8, 0xffee,
-      0xfff9, 0xfffd,
-      0x10100, 0x10102,
-      0x10107, 0x10133,
-      0x10137, 0x1013f,
-      0x1d000, 0x1d0f5,
-      0x1d100, 0x1d126,
-      0x1d12a, 0x1d166,
-      0x1d16a, 0x1d17a,
-      0x1d183, 0x1d184,
-      0x1d18c, 0x1d1a9,
-      0x1d1ae, 0x1d1dd,
-      0x1d300, 0x1d356,
-      0x1d400, 0x1d454,
-      0x1d456, 0x1d49c,
-      0x1d49e, 0x1d49f,
-      0x1d4a2, 0x1d4a2,
-      0x1d4a5, 0x1d4a6,
-      0x1d4a9, 0x1d4ac,
-      0x1d4ae, 0x1d4b9,
-      0x1d4bb, 0x1d4bb,
-      0x1d4bd, 0x1d4c3,
-      0x1d4c5, 0x1d505,
-      0x1d507, 0x1d50a,
-      0x1d50d, 0x1d514,
-      0x1d516, 0x1d51c,
-      0x1d51e, 0x1d539,
-      0x1d53b, 0x1d53e,
-      0x1d540, 0x1d544,
-      0x1d546, 0x1d546,
-      0x1d54a, 0x1d550,
-      0x1d552, 0x1d6a5,
-      0x1d6a8, 0x1d7c9,
-      0x1d7ce, 0x1d7ff,
-      0xe0001, 0xe0001,
-      0xe0020, 0xe007f,
-      0xf0000, 0xffffd,
-      0x100000, 0x10fffd
-    } : null; /* CR_Common */
-
-    /* 'Coptic': Script */
-    static final int CR_Coptic[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      3,
-      0x03e2, 0x03ef,
-      0x2c80, 0x2cea,
-      0x2cf9, 0x2cff
-    } : null; /* CR_Coptic */
-
-    /* 'Cypriot': Script */
-    static final int CR_Cypriot[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      6,
-      0x10800, 0x10805,
-      0x10808, 0x10808,
-      0x1080a, 0x10835,
-      0x10837, 0x10838,
-      0x1083c, 0x1083c,
-      0x1083f, 0x1083f
-    } : null; /* CR_Cypriot */
-
-    /* 'Cyrillic': Script */
-    static final int CR_Cyrillic[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      6,
-      0x0400, 0x0486,
-      0x0488, 0x04ce,
-      0x04d0, 0x04f9,
-      0x0500, 0x050f,
-      0x1d2b, 0x1d2b,
-      0x1d78, 0x1d78
-    } : null; /* CR_Cyrillic */
-
-    /* 'Deseret': Script */
-    static final int CR_Deseret[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      1,
-      0x10400, 0x1044f
-    } : null; /* CR_Deseret */
-
-    /* 'Devanagari': Script */
-    static final int CR_Devanagari[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      6,
-      0x0901, 0x0939,
-      0x093c, 0x094d,
-      0x0950, 0x0954,
-      0x0958, 0x0963,
-      0x0966, 0x096f,
-      0x097d, 0x097d
-    } : null; /* CR_Devanagari */
-
-    /* 'Ethiopic': Script */
-    static final int CR_Ethiopic[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      27,
-      0x1200, 0x1248,
-      0x124a, 0x124d,
-      0x1250, 0x1256,
-      0x1258, 0x1258,
-      0x125a, 0x125d,
-      0x1260, 0x1288,
-      0x128a, 0x128d,
-      0x1290, 0x12b0,
-      0x12b2, 0x12b5,
-      0x12b8, 0x12be,
-      0x12c0, 0x12c0,
-      0x12c2, 0x12c5,
-      0x12c8, 0x12d6,
-      0x12d8, 0x1310,
-      0x1312, 0x1315,
-      0x1318, 0x135a,
-      0x135f, 0x137c,
-      0x1380, 0x1399,
-      0x2d80, 0x2d96,
-      0x2da0, 0x2da6,
-      0x2da8, 0x2dae,
-      0x2db0, 0x2db6,
-      0x2db8, 0x2dbe,
-      0x2dc0, 0x2dc6,
-      0x2dc8, 0x2dce,
-      0x2dd0, 0x2dd6,
-      0x2dd8, 0x2dde
-    } : null; /* CR_Ethiopic */
-
-    /* 'Georgian': Script */
-    static final int CR_Georgian[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      4,
-      0x10a0, 0x10c5,
-      0x10d0, 0x10fa,
-      0x10fc, 0x10fc,
-      0x2d00, 0x2d25
-    } : null; /* CR_Georgian */
-
-    /* 'Glagolitic': Script */
-    static final int CR_Glagolitic[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      2,
-      0x2c00, 0x2c2e,
-      0x2c30, 0x2c5e
-    } : null; /* CR_Glagolitic */
-
-    /* 'Gothic': Script */
-    static final int CR_Gothic[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      1,
-      0x10330, 0x1034a
-    } : null; /* CR_Gothic */
-
-    /* 'Greek': Script */
-    static final int CR_Greek[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      31,
-      0x0374, 0x0375,
-      0x037a, 0x037a,
-      0x0384, 0x0386,
-      0x0388, 0x038a,
-      0x038c, 0x038c,
-      0x038e, 0x03a1,
-      0x03a3, 0x03ce,
-      0x03d0, 0x03e1,
-      0x03f0, 0x03ff,
-      0x1d26, 0x1d2a,
-      0x1d5d, 0x1d61,
-      0x1d66, 0x1d6a,
-      0x1f00, 0x1f15,
-      0x1f18, 0x1f1d,
-      0x1f20, 0x1f45,
-      0x1f48, 0x1f4d,
-      0x1f50, 0x1f57,
-      0x1f59, 0x1f59,
-      0x1f5b, 0x1f5b,
-      0x1f5d, 0x1f5d,
-      0x1f5f, 0x1f7d,
-      0x1f80, 0x1fb4,
-      0x1fb6, 0x1fc4,
-      0x1fc6, 0x1fd3,
-      0x1fd6, 0x1fdb,
-      0x1fdd, 0x1fef,
-      0x1ff2, 0x1ff4,
-      0x1ff6, 0x1ffe,
-      0x2126, 0x2126,
-      0x10140, 0x1018a,
-      0x1d200, 0x1d245
-    } : null; /* CR_Greek */
-
-    /* 'Gujarati': Script */
-    static final int CR_Gujarati[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      14,
-      0x0a81, 0x0a83,
-      0x0a85, 0x0a8d,
-      0x0a8f, 0x0a91,
-      0x0a93, 0x0aa8,
-      0x0aaa, 0x0ab0,
-      0x0ab2, 0x0ab3,
-      0x0ab5, 0x0ab9,
-      0x0abc, 0x0ac5,
-      0x0ac7, 0x0ac9,
-      0x0acb, 0x0acd,
-      0x0ad0, 0x0ad0,
-      0x0ae0, 0x0ae3,
-      0x0ae6, 0x0aef,
-      0x0af1, 0x0af1
-    } : null; /* CR_Gujarati */
-
-    /* 'Gurmukhi': Script */
-    static final int CR_Gurmukhi[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      15,
-      0x0a01, 0x0a03,
-      0x0a05, 0x0a0a,
-      0x0a0f, 0x0a10,
-      0x0a13, 0x0a28,
-      0x0a2a, 0x0a30,
-      0x0a32, 0x0a33,
-      0x0a35, 0x0a36,
-      0x0a38, 0x0a39,
-      0x0a3c, 0x0a3c,
-      0x0a3e, 0x0a42,
-      0x0a47, 0x0a48,
-      0x0a4b, 0x0a4d,
-      0x0a59, 0x0a5c,
-      0x0a5e, 0x0a5e,
-      0x0a66, 0x0a74
-    } : null; /* CR_Gurmukhi */
-
-    /* 'Han': Script */
-    static final int CR_Han[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      14,
-      0x2e80, 0x2e99,
-      0x2e9b, 0x2ef3,
-      0x2f00, 0x2fd5,
-      0x3005, 0x3005,
-      0x3007, 0x3007,
-      0x3021, 0x3029,
-      0x3038, 0x303b,
-      0x3400, 0x4db5,
-      0x4e00, 0x9fbb,
-      0xf900, 0xfa2d,
-      0xfa30, 0xfa6a,
-      0xfa70, 0xfad9,
-      0x20000, 0x2a6d6,
-      0x2f800, 0x2fa1d
-    } : null; /* CR_Han */
-
-    /* 'Hangul': Script */
-    static final int CR_Hangul[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      12,
-      0x1100, 0x1159,
-      0x115f, 0x11a2,
-      0x11a8, 0x11f9,
-      0x3131, 0x318e,
-      0x3200, 0x321e,
-      0x3260, 0x327d,
-      0xac00, 0xd7a3,
-      0xffa0, 0xffbe,
-      0xffc2, 0xffc7,
-      0xffca, 0xffcf,
-      0xffd2, 0xffd7,
-      0xffda, 0xffdc
-    } : null; /* CR_Hangul */
-
-    /* 'Hanunoo': Script */
-    static final int CR_Hanunoo[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      1,
-      0x1720, 0x1734
-    } : null; /* CR_Hanunoo */
-
-    /* 'Hebrew': Script */
-    static final int CR_Hebrew[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      10,
-      0x0591, 0x05b9,
-      0x05bb, 0x05c7,
-      0x05d0, 0x05ea,
-      0x05f0, 0x05f4,
-      0xfb1d, 0xfb36,
-      0xfb38, 0xfb3c,
-      0xfb3e, 0xfb3e,
-      0xfb40, 0xfb41,
-      0xfb43, 0xfb44,
-      0xfb46, 0xfb4f
-    } : null; /* CR_Hebrew */
-
-    /* 'Hiragana': Script */
-    static final int CR_Hiragana[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      2,
-      0x3041, 0x3096,
-      0x309d, 0x309f
-    } : null; /* CR_Hiragana */
-
-    /* 'Inherited': Script */
-    static final int CR_Inherited[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      15,
-      0x0300, 0x036f,
-      0x064b, 0x0655,
-      0x0670, 0x0670,
-      0x1dc0, 0x1dc3,
-      0x200c, 0x200d,
-      0x20d0, 0x20eb,
-      0x302a, 0x302f,
-      0x3099, 0x309a,
-      0xfe00, 0xfe0f,
-      0xfe20, 0xfe23,
-      0x1d167, 0x1d169,
-      0x1d17b, 0x1d182,
-      0x1d185, 0x1d18b,
-      0x1d1aa, 0x1d1ad,
-      0xe0100, 0xe01ef
-    } : null; /* CR_Inherited */
-
-    /* 'Kannada': Script */
-    static final int CR_Kannada[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      13,
-      0x0c82, 0x0c83,
-      0x0c85, 0x0c8c,
-      0x0c8e, 0x0c90,
-      0x0c92, 0x0ca8,
-      0x0caa, 0x0cb3,
-      0x0cb5, 0x0cb9,
-      0x0cbc, 0x0cc4,
-      0x0cc6, 0x0cc8,
-      0x0cca, 0x0ccd,
-      0x0cd5, 0x0cd6,
-      0x0cde, 0x0cde,
-      0x0ce0, 0x0ce1,
-      0x0ce6, 0x0cef
-    } : null; /* CR_Kannada */
-
-    /* 'Katakana': Script */
-    static final int CR_Katakana[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      5,
-      0x30a1, 0x30fa,
-      0x30fd, 0x30ff,
-      0x31f0, 0x31ff,
-      0xff66, 0xff6f,
-      0xff71, 0xff9d
-    } : null; /* CR_Katakana */
-
-    /* 'Kharoshthi': Script */
-    static final int CR_Kharoshthi[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      8,
-      0x10a00, 0x10a03,
-      0x10a05, 0x10a06,
-      0x10a0c, 0x10a13,
-      0x10a15, 0x10a17,
-      0x10a19, 0x10a33,
-      0x10a38, 0x10a3a,
-      0x10a3f, 0x10a47,
-      0x10a50, 0x10a58
-    } : null; /* CR_Kharoshthi */
-
-    /* 'Khmer': Script */
-    static final int CR_Khmer[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      4,
-      0x1780, 0x17dd,
-      0x17e0, 0x17e9,
-      0x17f0, 0x17f9,
-      0x19e0, 0x19ff
-    } : null; /* CR_Khmer */
-
-    /* 'Lao': Script */
-    static final int CR_Lao[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      18,
-      0x0e81, 0x0e82,
-      0x0e84, 0x0e84,
-      0x0e87, 0x0e88,
-      0x0e8a, 0x0e8a,
-      0x0e8d, 0x0e8d,
-      0x0e94, 0x0e97,
-      0x0e99, 0x0e9f,
-      0x0ea1, 0x0ea3,
-      0x0ea5, 0x0ea5,
-      0x0ea7, 0x0ea7,
-      0x0eaa, 0x0eab,
-      0x0ead, 0x0eb9,
-      0x0ebb, 0x0ebd,
-      0x0ec0, 0x0ec4,
-      0x0ec6, 0x0ec6,
-      0x0ec8, 0x0ecd,
-      0x0ed0, 0x0ed9,
-      0x0edc, 0x0edd
-    } : null; /* CR_Lao */
-
-    /* 'Latin': Script */
-    static final int CR_Latin[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      23,
-      0x0041, 0x005a,
-      0x0061, 0x007a,
-      0x00aa, 0x00aa,
-      0x00ba, 0x00ba,
-      0x00c0, 0x00d6,
-      0x00d8, 0x00f6,
-      0x00f8, 0x0241,
-      0x0250, 0x02b8,
-      0x02e0, 0x02e4,
-      0x1d00, 0x1d25,
-      0x1d2c, 0x1d5c,
-      0x1d62, 0x1d65,
-      0x1d6b, 0x1d77,
-      0x1d79, 0x1dbf,
-      0x1e00, 0x1e9b,
-      0x1ea0, 0x1ef9,
-      0x2071, 0x2071,
-      0x207f, 0x207f,
-      0x2090, 0x2094,
-      0x212a, 0x212b,
-      0xfb00, 0xfb06,
-      0xff21, 0xff3a,
-      0xff41, 0xff5a
-    } : null; /* CR_Latin */
-
-    /* 'Limbu': Script */
-    static final int CR_Limbu[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      5,
-      0x1900, 0x191c,
-      0x1920, 0x192b,
-      0x1930, 0x193b,
-      0x1940, 0x1940,
-      0x1944, 0x194f
-    } : null; /* CR_Limbu */
-
-    /* 'Linear_B': Script */
-    static final int CR_Linear_B[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      7,
-      0x10000, 0x1000b,
-      0x1000d, 0x10026,
-      0x10028, 0x1003a,
-      0x1003c, 0x1003d,
-      0x1003f, 0x1004d,
-      0x10050, 0x1005d,
-      0x10080, 0x100fa
-    } : null; /* CR_Linear_B */
-
-    /* 'Malayalam': Script */
-    static final int CR_Malayalam[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      11,
-      0x0d02, 0x0d03,
-      0x0d05, 0x0d0c,
-      0x0d0e, 0x0d10,
-      0x0d12, 0x0d28,
-      0x0d2a, 0x0d39,
-      0x0d3e, 0x0d43,
-      0x0d46, 0x0d48,
-      0x0d4a, 0x0d4d,
-      0x0d57, 0x0d57,
-      0x0d60, 0x0d61,
-      0x0d66, 0x0d6f
-    } : null; /* CR_Malayalam */
-
-    /* 'Mongolian': Script */
-    static final int CR_Mongolian[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      4,
-      0x1800, 0x180e,
-      0x1810, 0x1819,
-      0x1820, 0x1877,
-      0x1880, 0x18a9
-    } : null; /* CR_Mongolian */
-
-    /* 'Myanmar': Script */
-    static final int CR_Myanmar[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      6,
-      0x1000, 0x1021,
-      0x1023, 0x1027,
-      0x1029, 0x102a,
-      0x102c, 0x1032,
-      0x1036, 0x1039,
-      0x1040, 0x1059
-    } : null; /* CR_Myanmar */
-
-    /* 'New_Tai_Lue': Script */
-    static final int CR_New_Tai_Lue[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      4,
-      0x1980, 0x19a9,
-      0x19b0, 0x19c9,
-      0x19d0, 0x19d9,
-      0x19de, 0x19df
-    } : null; /* CR_New_Tai_Lue */
-
-    /* 'Ogham': Script */
-    static final int CR_Ogham[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      1,
-      0x1680, 0x169c
-    } : null; /* CR_Ogham */
-
-    /* 'Old_Italic': Script */
-    static final int CR_Old_Italic[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      2,
-      0x10300, 0x1031e,
-      0x10320, 0x10323
-    } : null; /* CR_Old_Italic */
-
-    /* 'Old_Persian': Script */
-    static final int CR_Old_Persian[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      2,
-      0x103a0, 0x103c3,
-      0x103c8, 0x103d5
-    } : null; /* CR_Old_Persian */
-
-    /* 'Oriya': Script */
-    static final int CR_Oriya[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      14,
-      0x0b01, 0x0b03,
-      0x0b05, 0x0b0c,
-      0x0b0f, 0x0b10,
-      0x0b13, 0x0b28,
-      0x0b2a, 0x0b30,
-      0x0b32, 0x0b33,
-      0x0b35, 0x0b39,
-      0x0b3c, 0x0b43,
-      0x0b47, 0x0b48,
-      0x0b4b, 0x0b4d,
-      0x0b56, 0x0b57,
-      0x0b5c, 0x0b5d,
-      0x0b5f, 0x0b61,
-      0x0b66, 0x0b71
-    } : null; /* CR_Oriya */
-
-    /* 'Osmanya': Script */
-    static final int CR_Osmanya[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      2,
-      0x10480, 0x1049d,
-      0x104a0, 0x104a9
-    } : null; /* CR_Osmanya */
-
-    /* 'Runic': Script */
-    static final int CR_Runic[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      2,
-      0x16a0, 0x16ea,
-      0x16ee, 0x16f0
-    } : null; /* CR_Runic */
-
-    /* 'Shavian': Script */
-    static final int CR_Shavian[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      1,
-      0x10450, 0x1047f
-    } : null; /* CR_Shavian */
-
-    /* 'Sinhala': Script */
-    static final int CR_Sinhala[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      11,
-      0x0d82, 0x0d83,
-      0x0d85, 0x0d96,
-      0x0d9a, 0x0db1,
-      0x0db3, 0x0dbb,
-      0x0dbd, 0x0dbd,
-      0x0dc0, 0x0dc6,
-      0x0dca, 0x0dca,
-      0x0dcf, 0x0dd4,
-      0x0dd6, 0x0dd6,
-      0x0dd8, 0x0ddf,
-      0x0df2, 0x0df4
-    } : null; /* CR_Sinhala */
-
-    /* 'Syloti_Nagri': Script */
-    static final int CR_Syloti_Nagri[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      1,
-      0xa800, 0xa82b
-    } : null; /* CR_Syloti_Nagri */
-
-    /* 'Syriac': Script */
-    static final int CR_Syriac[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      3,
-      0x0700, 0x070d,
-      0x070f, 0x074a,
-      0x074d, 0x074f
-    } : null; /* CR_Syriac */
-
-    /* 'Tagalog': Script */
-    static final int CR_Tagalog[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      2,
-      0x1700, 0x170c,
-      0x170e, 0x1714
-    } : null; /* CR_Tagalog */
-
-    /* 'Tagbanwa': Script */
-    static final int CR_Tagbanwa[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      3,
-      0x1760, 0x176c,
-      0x176e, 0x1770,
-      0x1772, 0x1773
-    } : null; /* CR_Tagbanwa */
-
-    /* 'Tai_Le': Script */
-    static final int CR_Tai_Le[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      2,
-      0x1950, 0x196d,
-      0x1970, 0x1974
-    } : null; /* CR_Tai_Le */
-
-    /* 'Tamil': Script */
-    static final int CR_Tamil[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      15,
-      0x0b82, 0x0b83,
-      0x0b85, 0x0b8a,
-      0x0b8e, 0x0b90,
-      0x0b92, 0x0b95,
-      0x0b99, 0x0b9a,
-      0x0b9c, 0x0b9c,
-      0x0b9e, 0x0b9f,
-      0x0ba3, 0x0ba4,
-      0x0ba8, 0x0baa,
-      0x0bae, 0x0bb9,
-      0x0bbe, 0x0bc2,
-      0x0bc6, 0x0bc8,
-      0x0bca, 0x0bcd,
-      0x0bd7, 0x0bd7,
-      0x0be6, 0x0bfa
-    } : null; /* CR_Tamil */
-
-    /* 'Telugu': Script */
-    static final int CR_Telugu[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      12,
-      0x0c01, 0x0c03,
-      0x0c05, 0x0c0c,
-      0x0c0e, 0x0c10,
-      0x0c12, 0x0c28,
-      0x0c2a, 0x0c33,
-      0x0c35, 0x0c39,
-      0x0c3e, 0x0c44,
-      0x0c46, 0x0c48,
-      0x0c4a, 0x0c4d,
-      0x0c55, 0x0c56,
-      0x0c60, 0x0c61,
-      0x0c66, 0x0c6f
-    } : null; /* CR_Telugu */
-
-    /* 'Thaana': Script */
-    static final int CR_Thaana[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      1,
-      0x0780, 0x07b1
-    } : null; /* CR_Thaana */
-
-    /* 'Thai': Script */
-    static final int CR_Thai[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      2,
-      0x0e01, 0x0e3a,
-      0x0e40, 0x0e5b
-    } : null; /* CR_Thai */
-
-    /* 'Tibetan': Script */
-    static final int CR_Tibetan[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      7,
-      0x0f00, 0x0f47,
-      0x0f49, 0x0f6a,
-      0x0f71, 0x0f8b,
-      0x0f90, 0x0f97,
-      0x0f99, 0x0fbc,
-      0x0fbe, 0x0fcc,
-      0x0fcf, 0x0fd1
-    } : null; /* CR_Tibetan */
-
-    /* 'Tifinagh': Script */
-    static final int CR_Tifinagh[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      2,
-      0x2d30, 0x2d65,
-      0x2d6f, 0x2d6f
-    } : null; /* CR_Tifinagh */
-
-    /* 'Ugaritic': Script */
-    static final int CR_Ugaritic[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      2,
-      0x10380, 0x1039d,
-      0x1039f, 0x1039f
-    } : null; /* CR_Ugaritic */
-
-    /* 'Yi': Script */
-    static final int CR_Yi[] = Config.USE_UNICODE_PROPERTIES ? new int[]{
-      2,
-      0xa000, 0xa48c,
-      0xa490, 0xa4c6
-    } : null; /* CR_Yi */
-
-    // #endif /* USE_UNICODE_PROPERTIES */
-}
diff --git a/src/org/joni/exception/ErrorMessages.java b/src/org/joni/exception/ErrorMessages.java
index fb67447..d1c1279 100644
--- a/src/org/joni/exception/ErrorMessages.java
+++ b/src/org/joni/exception/ErrorMessages.java
@@ -21,7 +21,7 @@ package org.joni.exception;
 
 import org.joni.Config;
 
-public interface ErrorMessages {
+public interface ErrorMessages extends org.jcodings.exception.ErrorMessages {
     final String MISMATCH = "mismatch";
     final String NO_SUPPORT_CONFIG = "no support in this configuration";
     
@@ -74,8 +74,6 @@ public interface ErrorMessages {
     final String ERR_TOO_BIG_BACKREF_NUMBER = "too big backref number";
     final String ERR_INVALID_BACKREF = Config.USE_NAMED_GROUP ? "invalid backref number/name" : "invalid backref number";
     final String ERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED = "numbered backref/call is not allowed. (use name)";
-    final String ERR_TOO_BIG_WIDE_CHAR_VALUE = "too big wide-char value";
-    final String ERR_TOO_LONG_WIDE_CHAR_VALUE = "too long wide-char value";
     final String ERR_INVALID_WIDE_CHAR_VALUE = "invalid wide-char value";
     final String ERR_EMPTY_GROUP_NAME = "group name is empty";
     final String ERR_INVALID_GROUP_NAME = "invalid group name <%n>";
@@ -86,15 +84,9 @@ public interface ErrorMessages {
     final String ERR_MULTIPLEX_DEFINITION_NAME_CALL = "multiplex definition name <%n> call";
     final String ERR_NEVER_ENDING_RECURSION = "never ending recursion";
     final String ERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY = "group number is too big for capture history";
-    final String ERR_INVALID_CHAR_PROPERTY_NAME = "invalid character property name {%n}";
-    final String ERR_INVALID_CODE_POINT_VALUE = "invalid code point value";
     final String ERR_NOT_SUPPORTED_ENCODING_COMBINATION = "not supported encoding combination";
     final String ERR_INVALID_COMBINATION_OF_OPTIONS = "invalid combination of options";
     final String ERR_OVER_THREAD_PASS_LIMIT_COUNT = "over thread pass limit count";
     final String ERR_TOO_BIG_SB_CHAR_VALUE = "too big singlebyte char value";
 
-    final String ERR_ENCODING_CLASS_DEF_NOT_FOUND = "encoding class <%n> not found";
-    final String ERR_ENCODING_LOAD_ERROR = "problem loading encoding <%n>";
-    
-    final String ERR_ILLEGAL_CHARACTER = "illegal character";
 }
diff --git a/src/org/joni/exception/IllegalCharacterException.java b/src/org/joni/exception/IllegalCharacterException.java
deleted file mode 100644
index bffefbc..0000000
--- a/src/org/joni/exception/IllegalCharacterException.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.exception;
-
-public class IllegalCharacterException extends JOniException {
-    private IllegalCharacterException() {
-        super(ErrorMessages.ERR_ILLEGAL_CHARACTER);
-    }
-    public static final IllegalCharacterException INSTANCE = new IllegalCharacterException();
-}
diff --git a/src/org/joni/exception/StandardException.java b/src/org/joni/exception/StandardException.java
deleted file mode 100644
index 72a5344..0000000
--- a/src/org/joni/exception/StandardException.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.exception;
-
-public class StandardException extends JOniException{
-    private static final long serialVersionUID = 5024868876657136769L;
-
-    public StandardException(String message) {
-        super(message);
-    }
-}
diff --git a/src/org/joni/util/ArrayCopy.java b/src/org/joni/util/ArrayCopy.java
deleted file mode 100644
index c03b75d..0000000
--- a/src/org/joni/util/ArrayCopy.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.util;
-
-public class ArrayCopy {
-    public static byte[] int2byte(int[]src) {
-        int srcLength = src.length;
-        byte[]dst = new byte[srcLength << 2];
-        
-        for (int i=0; i<srcLength; i++) {
-            int x = src[i];
-            int j = i << 2;
-            dst[j++] = (byte) ((x >>> 0) & 0xff);           
-            dst[j++] = (byte) ((x >>> 8) & 0xff);
-            dst[j++] = (byte) ((x >>> 16) & 0xff);
-            dst[j++] = (byte) ((x >>> 24) & 0xff);
-        }
-        return dst;
-    }
-    
-    public static int[] byte2int(byte[]src) {
-        int dstLength = src.length >>> 2;
-        int[]dst = new int[dstLength];
-        
-        for (int i=0; i<dstLength; i++) {
-            int j = i << 2;
-            int x = 0;
-            x += (src[j++] & 0xff) << 0;
-            x += (src[j++] & 0xff) << 8;
-            x += (src[j++] & 0xff) << 16;
-            x += (src[j++] & 0xff) << 24;
-            dst[i] = x;
-        }
-        return dst;
-    }
-}
diff --git a/src/org/joni/util/BytesHash.java b/src/org/joni/util/BytesHash.java
deleted file mode 100644
index 03097aa..0000000
--- a/src/org/joni/util/BytesHash.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.util;
-
-public final class BytesHash<V> extends Hash<V>{
-    
-    public BytesHash() {
-        super();
-    }
-
-    public BytesHash(int size) {
-        super(size);
-    }
-
-    public final static class OniBytesHashEntry<V> extends OniHashEntry<V> {
-        public final byte[]bytes;
-        public final int p;
-        public final int end;
-
-        public OniBytesHashEntry(int hash, OniHashEntry<V> next, V value, byte[]bytes, int p, int end) {
-            super(hash, next, value);
-            this.bytes = bytes;
-            this.p = p;
-            this.end = end;
-        }
-        
-        public boolean equals(byte[]bytes, int p, int end) {
-            if (this.end - this.p != end - p) return false;
-            if (this.bytes == bytes) return true;
-            int q = this.p;
-            while (q < this.end) if (this.bytes[q++] != bytes[p++]) return false;
-            return true;            
-        }       
-    }
-    
-    public static int hashCode(byte[]bytes, int p, int end) {
-        int key = 0;
-        while (p < end) key = ((key << 16) + (key << 6) - key) + (int)(bytes[p++]); // & 0xff ? we have to match jruby string hash 
-        key = key + (key >> 5);
-        return key;     
-    }
-    
-    public V put(byte[]bytes, V value) { 
-        return put(bytes, 0, bytes.length, value);      
-    }
-    
-    public V put(byte[]bytes, int p, int end, V value) {
-        checkResize();
-        int hash = hashValue(hashCode(bytes, p, end));
-        int i = bucketIndex(hash, table.length);
-        
-        for (OniBytesHashEntry<V> entry = (OniBytesHashEntry<V>)table[i]; entry != null; entry = (OniBytesHashEntry<V>)entry.next) {
-            if (entry.hash == hash && entry.equals(bytes, p, end)) {                
-                entry.value = value;                
-                return value;
-            }
-        }
-
-        table[i] = new OniBytesHashEntry<V>(hash, table[i], value, bytes, p, end);        
-        size++;        
-        return null;        
-    }
-    
-    public void putDirect(byte[]bytes, V value) {
-        putDirect(bytes, 0, bytes.length, value);
-    }
-    
-    public void putDirect(byte[]bytes, int p, int end, V value) {
-        checkResize();
-        final int hash = hashValue(hashCode(bytes, p, end));
-        final int i = bucketIndex(hash, table.length);
-        table[i] = new OniBytesHashEntry<V>(hash, table[i], value, bytes, p, end);
-        size++;
-    }
-
-    public V get(byte[]bytes) {
-        return get(bytes, 0, bytes.length);
-    }
-    
-    public V get(byte[]bytes, int p, int end) {
-        int hash = hashValue(hashCode(bytes, p, end));
-         for (OniBytesHashEntry<V> entry = (OniBytesHashEntry<V>)table[bucketIndex(hash, table.length)]; entry != null; entry = (OniBytesHashEntry<V>)entry.next) {
-             if (entry.hash == hash && entry.equals(bytes, p, end)) return entry.value;
-         }
-         return null;
-    }
-
-    public V delete(byte[]bytes) {
-        return delete(bytes, 0, bytes.length);
-    }
-    
-    public V delete(byte[]bytes, int p, int end) {
-        int hash = hashValue(hashCode(bytes, p, end));
-        int i = bucketIndex(hash, table.length);
-
-        OniBytesHashEntry<V> entry = (OniBytesHashEntry<V>)table[i];
-
-        if (entry == null) return null;
-
-        if (entry.hash == hash && entry.equals(bytes, p, end)) {
-            table[i] = entry.next;
-            size--;
-            return entry.value;
-        }
-        
-        for (; entry.next != null; entry = (OniBytesHashEntry<V>)entry.next) {
-            OniHashEntry<V> tmp = entry.next;
-            if (tmp.hash == hash && entry.equals(bytes, p, end)) {
-                entry.next = entry.next.next;
-                size--;
-                return tmp.value;
-            }
-        }
-        return null;
-    }
-    
-}
diff --git a/src/org/joni/util/Hash.java b/src/org/joni/util/Hash.java
deleted file mode 100644
index c2b2f71..0000000
--- a/src/org/joni/util/Hash.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.util;
-
-import java.util.Iterator;
-
-import org.joni.exception.InternalException;
-
-abstract class Hash<V> implements Iterable<V> {
-    protected OniHashEntry<V>[]table;
-    protected int size;
-        
-    private static final int PRIMES[] = {
-        8 + 3, 16 + 3, 32 + 5, 64 + 3, 128 + 3, 256 + 27, 512 + 9, 1024 + 9, 2048 + 5, 4096 + 3,
-        8192 + 27, 16384 + 43, 32768 + 3, 65536 + 45, 131072 + 29, 262144 + 3, 524288 + 21, 1048576 + 7,
-        2097152 + 17, 4194304 + 15, 8388608 + 9, 16777216 + 43, 33554432 + 35, 67108864 + 15,
-        134217728 + 29, 268435456 + 3, 536870912 + 11, 1073741824 + 85, 0
-    }; 
-    
-    private static final int INITIAL_CAPACITY = PRIMES[0];
-    private static final int MAXIMUM_CAPACITY = 1 << 30;
-    
-    
-    public Hash() {
-        table = new OniHashEntry[INITIAL_CAPACITY];     
-    }
-    
-    public Hash(int size) {
-        for (int i=0, n=MIN_CAPA; i<PRIMES.length; i++, n <<=1) { 
-            if (n > size) {
-                table = new OniHashEntry[PRIMES[i]];
-                return;
-            }
-        }
-        throw new InternalException("run out of polynomials");
-    }
-
-    public final int size() {
-        return size;
-    }
-
-    static class OniHashEntry<V> {
-        final int hash;
-        OniHashEntry<V> next;
-        public V value;
-
-        OniHashEntry(int hash, OniHashEntry<V> next, V value) {
-            this.hash = hash;
-            this.next = next;
-            this.value = value;
-        }
-
-    }
-
-    private static final int MIN_CAPA = 8;
-    // private static final int DENSITY = 5;
-    protected final void checkResize() {
-        if (size == table.length) { // size / table.length > DENSITY
-            int forSize = table.length + 1; // size + 1;         
-            for (int i=0, newCapacity = MIN_CAPA; i < PRIMES.length; i++, newCapacity <<= 1) {
-                if (newCapacity > forSize) {                  
-                    resize(PRIMES[i]);                  
-                    return;                 
-                }
-            }
-            return;
-        }
-    }
-
-    protected final void resize(int newCapacity) {
-        final OniHashEntry<V>[] oldTable = table;
-        final OniHashEntry<V>[] newTable = new OniHashEntry[newCapacity];
-        for (int j = 0; j < oldTable.length; j++) {
-            OniHashEntry<V> entry = oldTable[j];
-            oldTable[j] = null;
-            while (entry != null) {
-                OniHashEntry<V> next = entry.next;
-                int i = bucketIndex(entry.hash, newCapacity);
-                entry.next = newTable[i];
-                newTable[i] = entry;
-                entry = next;
-            }
-        }
-        table = newTable;
-    }
-    
-    protected static int bucketIndex(final int h, final int length) {
-        return (h % length); 
-    }
-    
-    private static final int HASH_SIGN_BIT_MASK = ~(1 << 31);
-    protected static int hashValue(int h) {
-        return h & HASH_SIGN_BIT_MASK;
-    }
-    
-    public Iterator<V> iterator() {
-        return new OniHashIterator();
-    }
-    
-    public class OniHashIterator implements Iterator<V> {
-        OniHashEntry<V> next, current;
-        int index;
-        
-        public OniHashIterator() {
-            if (size > 0) {
-                OniHashEntry<V>[]t= table;
-                while (index < t.length && (next = t[index++]) == null);
-            }
-        }
-        
-        public boolean hasNext() {
-            return next != null;
-        }
-
-        public V next() {
-            OniHashEntry<V> e = next;
-            if ((next = e.next) == null) {
-                OniHashEntry<V>[]t = table;
-                while (index < t.length && (next = t[index++]) == null);
-            }
-            current = e;
-            return e.value;
-        }
-
-        public void remove() {
-            throw new InternalException("not supported operation exception");
-        }
-    }
-    
-    public OniHashIterator entryIterator() {
-        return new OniHashIterator();
-    }
-    
-    public class OniHashEntryIterator implements Iterator<OniHashEntry<V>> {
-        OniHashEntry<V> next, current;
-        int index;
-        
-        public OniHashEntryIterator() {
-            if (size > 0) {
-                OniHashEntry<V>[]t= table;
-                while (index < t.length && (next = t[index++]) == null);
-            }
-        }
-        
-        public boolean hasNext() {
-            return next != null;
-        }
-
-        public OniHashEntry<V> next() {
-            OniHashEntry<V> e = next;
-            if ((next = e.next) == null) {
-                OniHashEntry<V>[]t = table;
-                while (index < t.length && (next = t[index++]) == null);
-            }
-            current = e;
-            return e;
-        }
-
-        public void remove() {
-            throw new InternalException("not supported operation exception");
-        }
-    }    
-}
diff --git a/src/org/joni/util/IntArrayHash.java b/src/org/joni/util/IntArrayHash.java
deleted file mode 100644
index 65655be..0000000
--- a/src/org/joni/util/IntArrayHash.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.util;
-
-public final class IntArrayHash<V> extends Hash<V>{
-    
-    public IntArrayHash() {
-        super();
-    }
-    
-    public IntArrayHash(int size) {
-        super(size);
-    }
-    
-    public final static class OniIntArrayHashEntry<V> extends OniHashEntry<V> {
-        public final int[]key;
-
-        public OniIntArrayHashEntry(int hash, OniHashEntry<V> next, V value, int[]key) {
-            super(hash, next, value);
-            this.key = key;
-        }
-        
-        public boolean equals(int[]key) {
-            if (this.key == key) return true;
-            if (this.key.length != key.length) return false;
-            
-            switch(key.length) {
-            case 1: return this.key[0] == key[0];
-            case 2: return this.key[0] == key[0] && this.key[1] == key[1];
-            case 3: return this.key[0] == key[0] && this.key[1] == key[1] && this.key[2] == key[2];
-            case 4: return this.key[0] == key[0] && this.key[1] == key[1] && this.key[2] == key[2] && this.key[3] == key[3];            
-            default: for (int i=0; i<key.length;i++) if (this.key[i] != key[i]) return false;
-            }
-            return true;
-        }       
-    }
-    
-    private int hashCode(int[]key) {
-        switch(key.length) {
-        case 1: return key[0];
-        case 2: return key[0] + key[1];
-        case 3: return key[0] + key[1] + key[2];
-        case 4: return key[0] + key[1] + key[2] + key[3];
-        default: 
-            int h = 0;
-            for (int i=0; i<key.length; i++) h += key[i];
-            return h;
-        }       
-    }
-    
-    public V put(int[]key, V value) {
-        checkResize();
-        int hash = hashValue(hashCode(key));
-        int i = bucketIndex(hash, table.length);
-        
-        for (OniIntArrayHashEntry<V> entry = (OniIntArrayHashEntry<V>)table[i]; entry != null; entry = (OniIntArrayHashEntry<V>)entry.next) {
-            if (entry.hash == hash && entry.equals(key)) {              
-                entry.value = value;                
-                return value;
-            }
-        }
-
-        table[i] = new OniIntArrayHashEntry<V>(hash, table[i], value, key);        
-        size++;        
-        return null;        
-    }
-    
-    public void putDirect(int[]key, V value) {
-        checkResize();
-        final int hash = hashValue(hashCode(key));
-        final int i = bucketIndex(hash, table.length);
-        table[i] = new OniIntArrayHashEntry<V>(hash, table[i], value, key);
-        size++;
-    }    
-    
-
-    public V get(int ... key) {
-        int hash = hashValue(hashCode(key));
-        for (OniIntArrayHashEntry<V> entry = (OniIntArrayHashEntry<V>)table[bucketIndex(hash, table.length)]; entry != null; entry = (OniIntArrayHashEntry<V>)entry.next) {
-            if (entry.hash == hash && entry.equals(key)) return entry.value;
-        }
-        return null;
-    }
-
-    public V delete(int ... key) {
-        int hash = hashValue(hashCode(key));
-        int i = bucketIndex(hash, table.length);
-
-        OniIntArrayHashEntry<V> entry = (OniIntArrayHashEntry<V>)table[i];
-
-        if (entry == null) return null;
-
-        if (entry.hash == hash && entry.equals(key)) {
-            table[i] = entry.next;
-            size--;
-            return entry.value;
-        }
-        
-        for (; entry.next != null; entry = (OniIntArrayHashEntry<V>)entry.next) {
-            OniHashEntry<V> tmp = entry.next;
-            if (tmp.hash == hash && entry.equals(key)) {
-                entry.next = entry.next.next;
-                size--;
-                return tmp.value;
-            }
-        }
-        return null;
-    }
-}
diff --git a/src/org/joni/util/IntHash.java b/src/org/joni/util/IntHash.java
deleted file mode 100644
index 8314923..0000000
--- a/src/org/joni/util/IntHash.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.util;
-
-public class IntHash<V> extends Hash<V> {
-    
-    public IntHash() {
-        super();
-    }
-    
-    public IntHash(int size) {
-        super(size);
-    }
-    
-    public static final class OniIntHashEntry<V> extends OniHashEntry<V> {
-        public OniIntHashEntry(int hash, OniHashEntry<V> next, V value) {
-            super(hash, next, value);
-        }
-    }
-    
-    public V put(int key, V value) {
-        checkResize();
-        int hash = hashValue(key);
-        int i = bucketIndex(hash, table.length);
-        
-        for (OniIntHashEntry<V> entry = (OniIntHashEntry<V>)table[i]; entry != null; entry = (OniIntHashEntry<V>)entry.next) {
-            if (entry.hash == hash) {               
-                entry.value = value;                
-                return value;
-            }
-        }
-
-        table[i] = new OniIntHashEntry<V>(hash, table[i], value);        
-        size++;        
-        return null;        
-    }
-    
-    public void putDirect(int key, V value) {
-        checkResize();
-        final int hash = hashValue(key);
-        final int i = bucketIndex(hash, table.length);
-        table[i] = new OniIntHashEntry<V>(hash, table[i], value);
-        size++;
-    }    
-
-    public V get(int key) {
-        int hash = hashValue(key);
-        for (OniIntHashEntry<V> entry = (OniIntHashEntry<V>)table[bucketIndex(hash, table.length)]; entry != null; entry = (OniIntHashEntry<V>)entry.next) {
-            if (entry.hash == hash) return entry.value;
-        }
-        return null;
-    }
-
-    public V delete(int key) {
-        int hash = hashValue(key);
-        int i = bucketIndex(hash, table.length);
-
-        OniIntHashEntry<V> entry = (OniIntHashEntry<V>)table[i];
-
-        if (entry == null) return null;
-
-        if (entry.hash == hash) {
-            table[i] = entry.next;
-            size--;
-            return entry.value;
-        }
-        
-        for (; entry.next != null; entry = (OniIntHashEntry<V>)entry.next) {
-            OniHashEntry<V> tmp = entry.next;
-            if (tmp.hash == hash && entry.equals(key)) {
-                entry.next = entry.next.next;
-                size--;
-                return tmp.value;
-            }
-        }
-        return null;
-    }
-}
diff --git a/src/org/joni/util/ObjHash.java b/src/org/joni/util/ObjHash.java
deleted file mode 100644
index 13e8f2c..0000000
--- a/src/org/joni/util/ObjHash.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of 
- * this software and associated documentation files (the "Software"), to deal in 
- * the Software without restriction, including without limitation the rights to 
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
- * SOFTWARE.
- */
-package org.joni.util;
-
-public final class ObjHash<K, V> extends Hash<V> {
-    public final static class OniObjHashEntry<K, V> extends OniHashEntry<V> {
-        public final K key;
-
-        public OniObjHashEntry(int hash, OniHashEntry<V> next, V value, K key) {
-            super(hash, next, value);
-            this.key = key;
-        }
-        
-        public boolean equals(Object key) {
-            if (this.key == key) return true;
-            return this.key.equals(key);
-        }       
-    }
-    
-    public V put(K key, V value) {
-        checkResize();
-        int hash = hashValue(key.hashCode());
-        int i = bucketIndex(hash, table.length);
-        
-        K k;
-        for (OniObjHashEntry<K, V> entry = (OniObjHashEntry<K, V>)table[i]; entry != null; entry = (OniObjHashEntry<K, V>)entry.next) {
-            if (entry.hash == hash && ((k = entry.key) == key || key.equals(k))) {              
-                entry.value = value;                
-                return value;
-            }
-        }
-
-        table[i] = new OniObjHashEntry<K, V>(hash, table[i], value, key);        
-        size++;        
-        return null;        
-    }
-    
-    public void putDirect(K key, V value) {
-        checkResize();
-        final int hash = hashValue(key.hashCode());
-        final int i = bucketIndex(hash, table.length);
-        table[i] = new OniObjHashEntry<K, V>(hash, table[i], value, key);
-        size++;
-    }    
-    
-
-    public V get(K key) {
-        int hash = hashValue(key.hashCode());
-        K k;
-        for (OniObjHashEntry<K, V> entry = (OniObjHashEntry<K, V>)table[bucketIndex(hash, table.length)]; entry != null; entry = (OniObjHashEntry<K, V>)entry.next) {
-            if (entry.hash == hash && ((k = entry.key) == key || key.equals(k))) return entry.value;
-        }
-        return null;
-    }
-
-    public V delete(K key) {
-        int hash = hashValue(key.hashCode());
-        int i = bucketIndex(hash, table.length);
-
-        OniObjHashEntry<K, V> entry = (OniObjHashEntry<K, V>)table[i];
-
-        if (entry == null) return null;
-
-        K k;
-        if (entry.hash == hash && ((k = entry.key) == key || key.equals(k))) {
-            table[i] = entry.next;
-            size--;
-            return entry.value;
-        }
-        
-        for (; entry.next != null; entry = (OniObjHashEntry<K, V>)entry.next) {
-            OniHashEntry<V> tmp = entry.next;
-            if (tmp.hash == hash && ((k = entry.key) == key || key.equals(k))) {
-                entry.next = entry.next.next;
-                size--;
-                return tmp.value;
-            }
-        }
-        return null;
-    }
-
-}
diff --git a/test/org/joni/test/Test.java b/test/org/joni/test/Test.java
index ecc9d8a..83d12e8 100644
--- a/test/org/joni/test/Test.java
+++ b/test/org/joni/test/Test.java
@@ -27,7 +27,7 @@ import org.joni.Option;
 import org.joni.Regex;
 import org.joni.Region;
 import org.joni.Syntax;
-import org.joni.encoding.Encoding;
+import org.jcodings.Encoding;
 import org.joni.exception.JOniException;
 
 public abstract class Test {
diff --git a/test/org/joni/test/TestA.java b/test/org/joni/test/TestA.java
index 12753e4..2a64370 100644
--- a/test/org/joni/test/TestA.java
+++ b/test/org/joni/test/TestA.java
@@ -21,8 +21,8 @@ package org.joni.test;
 
 import org.joni.Option;
 import org.joni.Syntax;
-import org.joni.encoding.Encoding;
-import org.joni.encoding.specific.ASCIIEncoding;
+import org.jcodings.Encoding;
+import org.jcodings.specific.ASCIIEncoding;
 
 public class TestA extends Test {
 
diff --git a/test/org/joni/test/TestC.java b/test/org/joni/test/TestC.java
index a0a02a6..ca4269f 100644
--- a/test/org/joni/test/TestC.java
+++ b/test/org/joni/test/TestC.java
@@ -21,8 +21,8 @@ package org.joni.test;
 
 import org.joni.Option;
 import org.joni.Syntax;
-import org.joni.encoding.Encoding;
-import org.joni.encoding.specific.EUCJPEncoding;
+import org.jcodings.Encoding;
+import org.jcodings.specific.EUCJPEncoding;
 
 public class TestC extends Test {
 
diff --git a/test/org/joni/test/TestCornerCases.java b/test/org/joni/test/TestCornerCases.java
index 7745dc4..b2b8377 100644
--- a/test/org/joni/test/TestCornerCases.java
+++ b/test/org/joni/test/TestCornerCases.java
@@ -24,8 +24,8 @@ import org.joni.Option;
 import org.joni.Regex;
 import org.joni.Region;
 import org.joni.Syntax;
-import org.joni.encoding.Encoding;
-import org.joni.encoding.specific.ASCIIEncoding;
+import org.jcodings.Encoding;
+import org.jcodings.specific.ASCIIEncoding;
 
 public class TestCornerCases extends Test {
     public int option() {
diff --git a/test/org/joni/test/TestCrnl.java b/test/org/joni/test/TestCrnl.java
index eb70dcb..a8ef6a6 100644
--- a/test/org/joni/test/TestCrnl.java
+++ b/test/org/joni/test/TestCrnl.java
@@ -22,8 +22,8 @@ package org.joni.test;
 import org.joni.Config;
 import org.joni.Option;
 import org.joni.Syntax;
-import org.joni.encoding.Encoding;
-import org.joni.encoding.specific.ASCIIEncoding;
+import org.jcodings.Encoding;
+import org.jcodings.specific.ASCIIEncoding;
 
 public class TestCrnl extends Test {
 
diff --git a/test/org/joni/test/TestU.java b/test/org/joni/test/TestU.java
index 5c8064e..ee12227 100644
--- a/test/org/joni/test/TestU.java
+++ b/test/org/joni/test/TestU.java
@@ -21,8 +21,8 @@ package org.joni.test;
 
 import org.joni.Option;
 import org.joni.Syntax;
-import org.joni.encoding.Encoding;
-import org.joni.encoding.specific.UTF16BEEncoding;
+import org.jcodings.Encoding;
+import org.jcodings.specific.UTF16BEEncoding;
 
 public class TestU extends Test {
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jruby-joni.git



More information about the pkg-java-commits mailing list