// Decompiled by Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) braces deadcode fieldsfirst 
// Source File Name:   CharacterSet.java
// Class Version:      45.3

package oracle.sql;

import java.sql.SQLException;
import oracle.gss.util.NLSError;

// Referenced classes of package oracle.sql:
//            CharacterBuffer, CharacterSetFactory, CharacterSetFactoryDefault, CharacterWalker

// flag ACC_SUPER is set
public abstract class CharacterSet
{
    // Constants:          625
    // Interfaces:         0
    // Fields:             222
    // Methods:            41
    // Class Attributes:   1


    public static final short DEFAULT_CHARSET = -1;
    public static final short ASCII_CHARSET = 1;
    public static final short ISO_LATIN_1_CHARSET = 31;
    public static final short UNICODE_1_CHARSET = 870;
    public static final short US7ASCII_CHARSET = 1;
    public static final short WE8DEC_CHARSET = 2;
    public static final short WE8HP_CHARSET = 3;
    public static final short US8PC437_CHARSET = 4;
    public static final short WE8EBCDIC37_CHARSET = 5;
    public static final short WE8EBCDIC500_CHARSET = 6;
    public static final short WE8EBCDIC285_CHARSET = 8;
    public static final short WE8PC850_CHARSET = 10;
    public static final short D7DEC_CHARSET = 11;
    public static final short F7DEC_CHARSET = 12;
    public static final short S7DEC_CHARSET = 13;
    public static final short E7DEC_CHARSET = 14;
    public static final short SF7ASCII_CHARSET = 15;
    public static final short NDK7DEC_CHARSET = 16;
    public static final short I7DEC_CHARSET = 17;
    public static final short NL7DEC_CHARSET = 18;
    public static final short CH7DEC_CHARSET = 19;
    public static final short YUG7ASCII_CHARSET = 20;
    public static final short SF7DEC_CHARSET = 21;
    public static final short TR7DEC_CHARSET = 22;
    public static final short IW7IS960_CHARSET = 23;
    public static final short IN8ISCII_CHARSET = 25;
    public static final short WE8ISO8859P1_CHARSET = 31;
    public static final short EE8ISO8859P2_CHARSET = 32;
    public static final short SE8ISO8859P3_CHARSET = 33;
    public static final short NEE8ISO8859P4_CHARSET = 34;
    public static final short CL8ISO8859P5_CHARSET = 35;
    public static final short AR8ISO8859P6_CHARSET = 36;
    public static final short EL8ISO8859P7_CHARSET = 37;
    public static final short IW8ISO8859P8_CHARSET = 38;
    public static final short WE8ISO8859P9_CHARSET = 39;
    public static final short NE8ISO8859P10_CHARSET = 40;
    public static final short TH8TISASCII_CHARSET = 41;
    public static final short TH8TISEBCDIC_CHARSET = 42;
    public static final short BN8BSCII_CHARSET = 43;
    public static final short VN8VN3_CHARSET = 44;
    public static final short VN8MSWIN1258_CHARSET = 45;
    public static final short WE8NEXTSTEP_CHARSET = 50;
    public static final short AR8ASMO708PLUS_CHARSET = 61;
    public static final short AR8EBCDICX_CHARSET = 70;
    public static final short AR8XBASIC_CHARSET = 72;
    public static final short EL8DEC_CHARSET = 81;
    public static final short TR8DEC_CHARSET = 82;
    public static final short WE8EBCDIC37C_CHARSET = 90;
    public static final short WE8EBCDIC500C_CHARSET = 91;
    public static final short IW8EBCDIC424_CHARSET = 92;
    public static final short TR8EBCDIC1026_CHARSET = 93;
    public static final short WE8EBCDIC871_CHARSET = 94;
    public static final short WE8EBCDIC284_CHARSET = 95;
    public static final short WE8EBCDIC1047_CHARSET = 96;
    public static final short EEC8EUROASCI_CHARSET = 110;
    public static final short EEC8EUROPA3_CHARSET = 113;
    public static final short LA8PASSPORT_CHARSET = 114;
    public static final short BG8PC437S_CHARSET = 140;
    public static final short EE8PC852_CHARSET = 150;
    public static final short RU8PC866_CHARSET = 152;
    public static final short RU8BESTA_CHARSET = 153;
    public static final short IW8PC1507_CHARSET = 154;
    public static final short RU8PC855_CHARSET = 155;
    public static final short TR8PC857_CHARSET = 156;
    public static final short CL8MACCYRILLIC_CHARSET = 158;
    public static final short CL8MACCYRILLICS_CHARSET = 159;
    public static final short WE8PC860_CHARSET = 160;
    public static final short IS8PC861_CHARSET = 161;
    public static final short EE8MACCES_CHARSET = 162;
    public static final short EE8MACCROATIANS_CHARSET = 163;
    public static final short TR8MACTURKISHS_CHARSET = 164;
    public static final short IS8MACICELANDICS_CHARSET = 165;
    public static final short EL8MACGREEKS_CHARSET = 166;
    public static final short IW8MACHEBREWS_CHARSET = 167;
    public static final short EE8MSWIN1250_CHARSET = 170;
    public static final short CL8MSWIN1251_CHARSET = 171;
    public static final short ET8MSWIN923_CHARSET = 172;
    public static final short BG8MSWIN_CHARSET = 173;
    public static final short EL8MSWIN1253_CHARSET = 174;
    public static final short IW8MSWIN1255_CHARSET = 175;
    public static final short LT8MSWIN921_CHARSET = 176;
    public static final short TR8MSWIN1254_CHARSET = 177;
    public static final short WE8MSWIN1252_CHARSET = 178;
    public static final short BLT8MSWIN1257_CHARSET = 179;
    public static final short D8EBCDIC273_CHARSET = 180;
    public static final short I8EBCDIC280_CHARSET = 181;
    public static final short DK8EBCDIC277_CHARSET = 182;
    public static final short S8EBCDIC278_CHARSET = 183;
    public static final short EE8EBCDIC870_CHARSET = 184;
    public static final short CL8EBCDIC1025_CHARSET = 185;
    public static final short F8EBCDIC297_CHARSET = 186;
    public static final short IW8EBCDIC1086_CHARSET = 187;
    public static final short CL8EBCDIC1025X_CHARSET = 188;
    public static final short N8PC865_CHARSET = 190;
    public static final short BLT8CP921_CHARSET = 191;
    public static final short LV8PC1117_CHARSET = 192;
    public static final short LV8PC8LR_CHARSET = 193;
    public static final short BLT8EBCDIC1112_CHARSET = 194;
    public static final short LV8RST104090_CHARSET = 195;
    public static final short CL8KOI8R_CHARSET = 196;
    public static final short BLT8PC775_CHARSET = 197;
    public static final short F7SIEMENS9780X_CHARSET = 201;
    public static final short E7SIEMENS9780X_CHARSET = 202;
    public static final short S7SIEMENS9780X_CHARSET = 203;
    public static final short DK7SIEMENS9780X_CHARSET = 204;
    public static final short N7SIEMENS9780X_CHARSET = 205;
    public static final short I7SIEMENS9780X_CHARSET = 206;
    public static final short D7SIEMENS9780X_CHARSET = 207;
    public static final short WE8GCOS7_CHARSET = 210;
    public static final short EL8GCOS7_CHARSET = 211;
    public static final short US8BS2000_CHARSET = 221;
    public static final short D8BS2000_CHARSET = 222;
    public static final short F8BS2000_CHARSET = 223;
    public static final short E8BS2000_CHARSET = 224;
    public static final short DK8BS2000_CHARSET = 225;
    public static final short S8BS2000_CHARSET = 226;
    public static final short WE8BS2000_CHARSET = 231;
    public static final short CL8BS2000_CHARSET = 235;
    public static final short WE8BS2000L5_CHARSET = 239;
    public static final short WE8DG_CHARSET = 241;
    public static final short WE8NCR4970_CHARSET = 251;
    public static final short WE8ROMAN8_CHARSET = 261;
    public static final short EE8MACCE_CHARSET = 262;
    public static final short EE8MACCROATIAN_CHARSET = 263;
    public static final short TR8MACTURKISH_CHARSET = 264;
    public static final short IS8MACICELANDIC_CHARSET = 265;
    public static final short EL8MACGREEK_CHARSET = 266;
    public static final short IW8MACHEBREW_CHARSET = 267;
    public static final short US8ICL_CHARSET = 277;
    public static final short WE8ICL_CHARSET = 278;
    public static final short WE8ISOICLUK_CHARSET = 279;
    public static final short WE8MACROMAN8_CHARSET = 351;
    public static final short WE8MACROMAN8S_CHARSET = 352;
    public static final short TH8MACTHAI_CHARSET = 353;
    public static final short TH8MACTHAIS_CHARSET = 354;
    public static final short HU8CWI2_CHARSET = 368;
    public static final short EL8PC437S_CHARSET = 380;
    public static final short EL8EBCDIC875_CHARSET = 381;
    public static final short EL8PC737_CHARSET = 382;
    public static final short LT8PC772_CHARSET = 383;
    public static final short LT8PC774_CHARSET = 384;
    public static final short EL8PC869_CHARSET = 385;
    public static final short EL8PC851_CHARSET = 386;
    public static final short CDN8PC863_CHARSET = 390;
    public static final short HU8ABMOD_CHARSET = 401;
    public static final short AR8ASMO8X_CHARSET = 500;
    public static final short AR8NAFITHA711T_CHARSET = 504;
    public static final short AR8SAKHR707T_CHARSET = 505;
    public static final short AR8MUSSAD768T_CHARSET = 506;
    public static final short AR8ADOS710T_CHARSET = 507;
    public static final short AR8ADOS720T_CHARSET = 508;
    public static final short AR8APTEC715T_CHARSET = 509;
    public static final short AR8NAFITHA721T_CHARSET = 511;
    public static final short AR8HPARABIC8T_CHARSET = 514;
    public static final short AR8NAFITHA711_CHARSET = 554;
    public static final short AR8SAKHR707_CHARSET = 555;
    public static final short AR8MUSSAD768_CHARSET = 556;
    public static final short AR8ADOS710_CHARSET = 557;
    public static final short AR8ADOS720_CHARSET = 558;
    public static final short AR8APTEC715_CHARSET = 559;
    public static final short AR8MSAWIN_CHARSET = 560;
    public static final short AR8NAFITHA721_CHARSET = 561;
    public static final short AR8SAKHR706_CHARSET = 563;
    public static final short AR8ARABICMAC_CHARSET = 565;
    public static final short AR8ARABICMACS_CHARSET = 566;
    public static final short AR8ARABICMACT_CHARSET = 567;
    public static final short LA8ISO6937_CHARSET = 590;
    public static final short US8NOOP_CHARSET = 797;
    public static final short WE8DECTST_CHARSET = 798;
    public static final short JA16VMS_CHARSET = 829;
    public static final short JA16EUC_CHARSET = 830;
    public static final short JA16EUCYEN_CHARSET = 831;
    public static final short JA16SJIS_CHARSET = 832;
    public static final short JA16DBCS_CHARSET = 833;
    public static final short JA16SJISYEN_CHARSET = 834;
    public static final short JA16EBCDIC930_CHARSET = 835;
    public static final short JA16MACSJIS_CHARSET = 836;
    public static final short JA16MSWIN932_CHARSET = 837;
    public static final short KO16KSC5601_CHARSET = 840;
    public static final short KO16DBCS_CHARSET = 842;
    public static final short KO16KSCCS_CHARSET = 845;
    public static final short KO16MSWIN949_CHARSET = 846;
    public static final short ZHS16CGB231280_CHARSET = 850;
    public static final short ZHS16MACCGB231280_CHARSET = 851;
    public static final short ZHS16GBK_CHARSET = 852;
    public static final short ZHS16DBCS_CHARSET = 853;
    public static final short ZHS32GB18030 = 854;
    public static final short ZHS16MSWIN936_CHARSET = 854;
    public static final short ZHT32EUC_CHARSET = 860;
    public static final short ZHT32SOPS_CHARSET = 861;
    public static final short ZHT16DBT_CHARSET = 862;
    public static final short ZHT32TRIS_CHARSET = 863;
    public static final short ZHT16DBCS_CHARSET = 864;
    public static final short ZHT16BIG5_CHARSET = 865;
    public static final short ZHT16CCDC_CHARSET = 866;
    public static final short ZHT16MSWIN950_CHARSET = 867;
    public static final short AL24UTFFSS_CHARSET = 870;
    public static final short UTF8_CHARSET = 871;
    public static final short UTFE_CHARSET = 872;
    public static final short AL32UTF8_CHARSET = 873;
    public static final short KO16TSTSET_CHARSET = 996;
    public static final short JA16TSTSET2_CHARSET = 997;
    public static final short JA16TSTSET_CHARSET = 998;
    public static final short US16TSTFIXED_CHARSET = 1001;
    public static final short JA16EUCFIXED_CHARSET = 1830;
    public static final short JA16SJISFIXED_CHARSET = 1832;
    public static final short JA16DBCSFIXED_CHARSET = 1833;
    public static final short KO16KSC5601FIXED_CHARSET = 1840;
    public static final short KO16DBCSFIXED_CHARSET = 1842;
    public static final short ZHS16CGB231280FIXED_CHARSET = 1850;
    public static final short ZHS16GBKFIXED_CHARSET = 1852;
    public static final short ZHS16DBCSFIXED_CHARSET = 1853;
    public static final short ZHT32EUCFIXED_CHARSET = 1860;
    public static final short ZHT32TRISFIXED_CHARSET = 1863;
    public static final short ZHT16DBCSFIXED_CHARSET = 1864;
    public static final short ZHT16BIG5FIXED_CHARSET = 1865;
    public static final short AL16UTF16_CHARSET = 2000;
    public static final short AL16UTF16LE_CHARSET = 2002;
    public static final short UNICODE_2_CHARSET = 871;
    private int oracleId;
    int rep;
    static CharacterSetFactory factory = new CharacterSetFactoryDefault();

    // Decompiling method: <init>  Signature: (I)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 10 bytes, Code offset: 11716
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 10 Range 0 9 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 10 Range 0 9 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 10 Range 0 9 Init 0 fixed
    CharacterSet(int i)
    {
        super();
        oracleId = i;
        return;
    }

    // Decompiling method: AL16UTF16BytesToJavaChars  Signature: ([BII)[C
    // Max stack: 6, #locals: 7, #params: 3
    // Code length: 66 bytes, Code offset: 11772
    // Line Number Table found: 8 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 66 Range 0 65 Init 0
    // Parameter  1 added: Name i Type I At 0 66 Range 0 65 Init 0
    // Parameter  2 added: Name j Type I At 0 66 Range 0 65 Init 0
    // RetValue   7 added: Name <returnValue> Type [C At 0 66 Range 0 65 Init 0 fixed
    // LocalVar   5 added: Name k Type I At 12 48 Range 12 59 Init 12
    // LocalVar   6 added: Name ac Type [C At 18 47 Range 18 64 Init 18
    // LocalVar   3 added: Name flag Type Z At 21 37 Range 21 57 Init 21
    // LocalVar   4 added: Name l Type I At 23 31 Range 23 53 Init 23
    // LocalVar   3 chged: Name i1 Oname flag Type I At 57 1 Range 21 57 Init 21
    public static char[] AL16UTF16BytesToJavaChars(byte abyte0[], int i, int j)
    {
        int i1 = Math.min(abyte0.length - i >>> 1, j >>> 1);
        char ac[] = new char[i1];
        int k = 0;
        int l = i;
        for(; k < i1; k++)
        {
            ac[k] = (char)((abyte0[l] << 8) + (abyte0[l + 1] & 0xff));
            l += 2;
        }

        return ac;
    }

    // Decompiling method: AL16UTF16BytesToJavaChars  Signature: ([BI[C)I
    // Max stack: 6, #locals: 6, #params: 3
    // Code length: 54 bytes, Code offset: 11904
    // Line Number Table found: 7 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 54 Range 0 53 Init 0
    // Parameter  1 added: Name i Type I At 0 54 Range 0 53 Init 0
    // Parameter  2 added: Name ac Type [C At 0 54 Range 0 53 Init 0
    // RetValue   6 added: Name <returnValue> Type I At 0 54 Range 0 53 Init 0 fixed
    // LocalVar   5 added: Name j Type I At 8 41 Range 8 48 Init 8
    // LocalVar   3 added: Name flag Type Z At 11 42 Range 11 52 Init 11
    // LocalVar   4 added: Name flag1 Type Z At 13 30 Range 13 42 Init 13
    // LocalVar   3 chged: Name k Oname flag Type I At 46 1 Range 11 52 Init 11
    // LocalVar   4 chged: Name l Oname flag1 Type I At 21 2 Range 13 42 Init 13
    public static int AL16UTF16BytesToJavaChars(byte abyte0[], int i, char ac[])
    {
        int l = Math.min(i >>> 1, ac.length);
        int j = 0;
        int k = 0;
        for(; j < l; j++)
        {
            ac[j] = (char)((abyte0[k] << 8) + (abyte0[k + 1] & 0xff));
            k += 2;
        }

        return j;
    }

    // Decompiling method: AL16UTF16BytesToString  Signature: ([BI)Ljava/lang/String;
    // Max stack: 3, #locals: 3, #params: 2
    // Code length: 22 bytes, Code offset: 12020
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 22 Range 0 21 Init 0
    // Parameter  1 added: Name i Type I At 0 22 Range 0 21 Init 0
    // RetValue   3 added: Name <returnValue> Type Ljava/lang/String; At 0 22 Range 0 21 Init 0 fixed
    // LocalVar   2 added: Name ac Type [C At 5 13 Range 5 17 Init 5
    public static String AL16UTF16BytesToString(byte abyte0[], int i)
    {
        char ac[] = new char[i >>> 1];
        AL16UTF16BytesToJavaChars(abyte0, i, ac);
        return new String(ac);
    }

    // Decompiling method: AL16UTF16LEBytesToJavaChars  Signature: ([BII)[C
    // Max stack: 5, #locals: 7, #params: 3
    // Code length: 66 bytes, Code offset: 12088
    // Line Number Table found: 8 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 66 Range 0 65 Init 0
    // Parameter  1 added: Name i Type I At 0 66 Range 0 65 Init 0
    // Parameter  2 added: Name j Type I At 0 66 Range 0 65 Init 0
    // RetValue   7 added: Name <returnValue> Type [C At 0 66 Range 0 65 Init 0 fixed
    // LocalVar   5 added: Name k Type I At 12 48 Range 12 59 Init 12
    // LocalVar   6 added: Name ac Type [C At 18 47 Range 18 64 Init 18
    // LocalVar   3 added: Name flag Type Z At 21 37 Range 21 57 Init 21
    // LocalVar   4 added: Name l Type I At 23 31 Range 23 53 Init 23
    // LocalVar   3 chged: Name i1 Oname flag Type I At 57 1 Range 21 57 Init 21
    public static char[] AL16UTF16LEBytesToJavaChars(byte abyte0[], int i, int j)
    {
        int i1 = Math.min(abyte0.length - i >>> 1, j >>> 1);
        char ac[] = new char[i1];
        int k = 0;
        int l = i;
        for(; k < i1; k++)
        {
            ac[k] = (char)((abyte0[l + 1] << 8) + (abyte0[l] & 0xff));
            l += 2;
        }

        return ac;
    }

    // Decompiling method: AL32UTF8ToJavaChar  Signature: ([BII)[C
    // Max stack: 5, #locals: 12, #params: 3
    // Code length: 461 bytes, Code offset: 12220
    // Line Number Table found: 60 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 461 Range 0 460 Init 0
    // Parameter  1 added: Name i Type I At 0 461 Range 0 460 Init 0
    // Parameter  2 added: Name j Type I At 0 461 Range 0 460 Init 0
    // RetValue  12 added: Name <returnValue> Type [C At 0 461 Range 0 460 Init 0 fixed
    // LocalVar   3 added: Name k Type I At 1 452 Range 1 452 Init 1
    // LocalVar   4 added: Name l Type I At 5 450 Range 5 454 Init 5
    // LocalVar   5 added: Name ac Type [C At 26 434 Range 26 459 Init 26
    // LocalVar   6 added: Name flag Type Z At 29 398 Range 29 426 Init 29
    // LocalVar   7 added: Name byte0 Type B At 40 340 Range 40 379 Init 40
    // LocalVar   8 added: Name i1 Type I At 48 4 Range 48 51 Init 48
    // LocalVar   6 chged: Name j1 Oname flag Type I At 136 3 Range 29 426 Init 29
    // LocalVar   9 added: Name byte1 Type B At 165 34 Range 165 198 Init 165
    // LocalVar   9 added: Name byte2 Type B At 225 54 Range 225 278 Init 225
    // LocalVar  10 added: Name byte3 Type B At 233 55 Range 233 287 Init 233
    // LocalVar   9 added: Name byte4 Type B At 314 88 Range 314 401 Init 314
    // LocalVar  10 added: Name byte5 Type B At 322 107 Range 322 428 Init 322
    // LocalVar  11 added: Name byte6 Type B At 330 107 Range 330 436 Init 330
    static char[] AL32UTF8ToJavaChar(byte abyte0[], int i, int j)
        throws SQLException
    {
        int k = i;
        int l = i + j;
        if(l > abyte0.length)
        {
            l = abyte0.length;
        }
        char ac[] = new char[UTFStringLength(abyte0, i, j)];
        int i1 = 0;
        while(k < l) 
        {
            byte byte0 = abyte0[k++];
            int j1 = byte0 & 0xf0;
            switch(j1 / 16)
            {
            case 0: // '\0'
            case 1: // '\001'
            case 2: // '\002'
            case 3: // '\003'
            case 4: // '\004'
            case 5: // '\005'
            case 6: // '\006'
            case 7: // '\007'
                ac[i1++] = (char)(byte0 & 0xff);
                break;

            case 12: // '\f'
            case 13: // '\r'
                if(k >= l)
                {
                    failUTFConversion();
                }
                byte byte1 = abyte0[k++];
                if((byte1 & 0xc0) != 128)
                {
                    failUTFConversion();
                }
                ac[i1++] = (char)((byte0 & 0x1f) << 6 | byte1 & 0x3f);
                break;

            case 14: // '\016'
                if(k + 1 >= l)
                {
                    failUTFConversion();
                }
                byte byte2 = abyte0[k++];
                byte byte4 = abyte0[k++];
                if((byte2 & 0xc0) != 128 || (byte4 & 0xc0) != 128)
                {
                    failUTFConversion();
                }
                ac[i1++] = (char)((byte0 & 0xf) << 12 | (byte2 & 0x3f) << 6 | byte4 & 0x3f);
                break;

            case 15: // '\017'
                if(k + 2 >= l)
                {
                    failUTFConversion();
                }
                byte byte3 = abyte0[k++];
                byte byte5 = abyte0[k++];
                byte byte6 = abyte0[k++];
                if((byte3 & 0xc0) != 128 || (byte5 & 0xc0) != 128 || (byte6 & 0xc0) != 128)
                {
                    failUTFConversion();
                }
                ac[i1++] = (char)((((byte0 & 0x7) << 2 | (byte3 >> 4 & 0x3) - 1) & 0xf) << 6 | (byte3 & 0xf) << 2 | byte5 >> 4 & 0x3 | 0xd800);
                ac[i1++] = (char)((byte5 & 0xf) << 6 | byte6 & 0x3f | 0xdc00);
                break;

            case 8: // '\b'
            case 9: // '\t'
            case 10: // '\n'
            case 11: // '\013'
            default:
                failUTFConversion();
                break;
            }
        }
        return ac;
    }

    // Decompiling method: UTFStringLength  Signature: ([BII)I
    // Max stack: 3, #locals: 5, #params: 3
    // Code length: 135 bytes, Code offset: 12965
    // Line Number Table found: 17 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 135 Range 0 134 Init 0
    // Parameter  1 added: Name i Type I At 0 135 Range 0 134 Init 0
    // Parameter  2 added: Name j Type I At 0 135 Range 0 134 Init 0
    // RetValue   5 added: Name <returnValue> Type I At 0 135 Range 0 134 Init 0 fixed
    // LocalVar   3 added: Name flag Type Z At 1 133 Range 1 133 Init 1
    // LocalVar   4 added: Name k Type I At 3 124 Range 3 126 Init 3
    // LocalVar   3 chged: Name l Oname flag Type I At 133 1 Range 1 133 Init 1
    static int UTFStringLength(byte abyte0[], int i, int j)
    {
        int k = 0;
        for(int l = i; l < i + j;)
        {
            switch((abyte0[l] & 0xf0) >> 4)
            {
            case 1: // '\001'
            case 2: // '\002'
            case 3: // '\003'
            case 4: // '\004'
            case 5: // '\005'
            case 6: // '\006'
            case 7: // '\007'
                l++;
                break;

            case 12: // '\f'
            case 13: // '\r'
                l += 2;
                break;

            case 14: // '\016'
                l += 3;
                break;

            case 15: // '\017'
                l += 4;
                k++;
                break;

            case 8: // '\b'
            case 9: // '\t'
            case 10: // '\n'
            case 11: // '\013'
            default:
                l++;
                break;
            }
            k++;
        }

        return k;
    }

    // Decompiling method: UTFToJavaChar  Signature: ([BII)[C
    // Max stack: 5, #locals: 11, #params: 3
    // Code length: 305 bytes, Code offset: 13202
    // Line Number Table found: 35 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 305 Range 0 304 Init 0
    // Parameter  1 added: Name i Type I At 0 305 Range 0 304 Init 0
    // Parameter  2 added: Name j Type I At 0 305 Range 0 304 Init 0
    // RetValue  11 added: Name <returnValue> Type [C At 0 305 Range 0 304 Init 0 fixed
    // LocalVar   3 added: Name k Type I At 1 296 Range 1 296 Init 1
    // LocalVar   4 added: Name l Type I At 5 294 Range 5 298 Init 5
    // LocalVar   5 added: Name ac Type [C At 26 278 Range 26 303 Init 26
    // LocalVar   6 added: Name flag Type Z At 29 236 Range 29 264 Init 29
    // LocalVar   7 added: Name byte0 Type B At 40 227 Range 40 266 Init 40
    // LocalVar   8 added: Name i1 Type I At 48 4 Range 48 51 Init 48
    // LocalVar   6 chged: Name j1 Oname flag Type I At 132 3 Range 29 264 Init 29
    // LocalVar   9 added: Name byte1 Type B At 161 34 Range 161 194 Init 161
    // LocalVar   9 added: Name byte2 Type B At 221 54 Range 221 274 Init 221
    // LocalVar  10 added: Name byte3 Type B At 229 55 Range 229 283 Init 229
    static char[] UTFToJavaChar(byte abyte0[], int i, int j)
        throws SQLException
    {
        int k = i;
        int l = i + j;
        if(l > abyte0.length)
        {
            l = abyte0.length;
        }
        char ac[] = new char[UTFStringLength(abyte0, i, j)];
        int i1 = 0;
        while(k < l) 
        {
            byte byte0 = abyte0[k++];
            int j1 = byte0 & 0xf0;
            switch(j1 / 16)
            {
            case 0: // '\0'
            case 1: // '\001'
            case 2: // '\002'
            case 3: // '\003'
            case 4: // '\004'
            case 5: // '\005'
            case 6: // '\006'
            case 7: // '\007'
                ac[i1++] = (char)(byte0 & 0xff);
                break;

            case 12: // '\f'
            case 13: // '\r'
                if(k >= l)
                {
                    failUTFConversion();
                }
                byte byte1 = abyte0[k++];
                if((byte1 & 0xc0) != 128)
                {
                    failUTFConversion();
                }
                ac[i1++] = (char)((byte0 & 0x1f) << 6 | byte1 & 0x3f);
                break;

            case 14: // '\016'
                if(k + 1 >= l)
                {
                    failUTFConversion();
                }
                byte byte2 = abyte0[k++];
                byte byte3 = abyte0[k++];
                if((byte2 & 0xc0) != 128 || (byte3 & 0xc0) != 128)
                {
                    failUTFConversion();
                }
                ac[i1++] = (char)((byte0 & 0xf) << 12 | (byte2 & 0x3f) << 6 | byte3 & 0x3f);
                break;

            case 8: // '\b'
            case 9: // '\t'
            case 10: // '\n'
            case 11: // '\013'
            default:
                failUTFConversion();
                break;
            }
        }
        return ac;
    }

    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 0 Range 0 4294967295 Init 0 fixed
    // Parameter  1 added: Name s Type Ljava/lang/String; At 0 0 Range 0 4294967295 Init 0
    // RetValue   2 added: Name <returnValue> Type [B At 0 0 Range 0 4294967295 Init 0 fixed
    public abstract byte[] convert(String s)
        throws SQLException;

    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 0 Range 0 4294967295 Init 0 fixed
    // Parameter  1 added: Name characterset Type Loracle/sql/CharacterSet; At 0 0 Range 0 4294967295 Init 0
    // Parameter  2 added: Name abyte0 Type [B At 0 0 Range 0 4294967295 Init 0
    // Parameter  3 added: Name i Type I At 0 0 Range 0 4294967295 Init 0
    // Parameter  4 added: Name j Type I At 0 0 Range 0 4294967295 Init 0
    // RetValue   5 added: Name <returnValue> Type [B At 0 0 Range 0 4294967295 Init 0 fixed
    public abstract byte[] convert(CharacterSet characterset, byte abyte0[], int i, int j)
        throws SQLException;

    // Decompiling method: convertUnshared  Signature: (Loracle/sql/CharacterSet;[BII)[B
    // Max stack: 5, #locals: 6, #params: 5
    // Code length: 36 bytes, Code offset: 13727
    // Line Number Table found: 5 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 36 Range 0 35 Init 0 fixed
    // Parameter  1 added: Name characterset Type Loracle/sql/CharacterSet; At 0 36 Range 0 35 Init 0
    // Parameter  2 added: Name abyte0 Type [B At 0 36 Range 0 35 Init 0
    // Parameter  3 added: Name i Type I At 0 36 Range 0 35 Init 0
    // Parameter  4 added: Name j Type I At 0 36 Range 0 35 Init 0
    // RetValue   6 added: Name <returnValue> Type [B At 0 36 Range 0 35 Init 0 fixed
    // LocalVar   5 added: Name abyte1 Type [B At 9 26 Range 9 34 Init 9
    public byte[] convertUnshared(CharacterSet characterset, byte abyte0[], int i, int j)
        throws SQLException
    {
        byte abyte1[] = convert(characterset, abyte0, i, j);
        if(abyte1 == abyte0)
        {
            abyte1 = new byte[abyte0.length];
            System.arraycopy(abyte0, 0, abyte1, 0, j);
        }
        return abyte1;
    }

    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 0 Range 0 4294967295 Init 0 fixed
    // Parameter  1 added: Name s Type Ljava/lang/String; At 0 0 Range 0 4294967295 Init 0
    // RetValue   2 added: Name <returnValue> Type [B At 0 0 Range 0 4294967295 Init 0 fixed
    public abstract byte[] convertWithReplacement(String s);

    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 0 Range 0 4294967295 Init 0 fixed
    // Parameter  1 added: Name characterwalker Type Loracle/sql/CharacterWalker; At 0 0 Range 0 4294967295 Init 0
    // RetValue   2 added: Name <returnValue> Type I At 0 0 Range 0 4294967295 Init 0 fixed
    abstract int decode(CharacterWalker characterwalker)
        throws SQLException;

    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 0 Range 0 4294967295 Init 0 fixed
    // Parameter  1 added: Name characterbuffer Type Loracle/sql/CharacterBuffer; At 0 0 Range 0 4294967295 Init 0
    // Parameter  2 added: Name i Type I At 0 0 Range 0 4294967295 Init 0
    // RetValue   3 added: Name <returnValue> Type V At 0 0 Range 0 4294967295 Init 0 fixed
    abstract void encode(CharacterBuffer characterbuffer, int i)
        throws SQLException;

    // Decompiling method: equals  Signature: (Ljava/lang/Object;)Z
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 27 bytes, Code offset: 13871
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 27 Range 0 26 Init 0 fixed
    // Parameter  1 added: Name obj Type Ljava/lang/Object; At 0 27 Range 0 26 Init 0
    // RetValue   2 added: Name <returnValue> Type Z At 0 27 Range 0 26 Init 0 fixed
    public boolean equals(Object obj)
    {
        return (obj instanceof CharacterSet) && oracleId == ((CharacterSet)obj).oracleId;
    }

    // Decompiling method: failCharacterConversion  Signature: (Loracle/sql/CharacterSet;)V
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 13936
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name characterset Type Loracle/sql/CharacterSet; At 0 8 Range 0 7 Init 0
    // RetValue   1 added: Name <returnValue> Type V At 0 8 Range 0 7 Init 0 fixed
    static void failCharacterConversion(CharacterSet characterset)
        throws SQLException
    {
        NLSError.throwSQLException(17055, characterset);
        return;
    }

    // Decompiling method: failUTFConversion  Signature: ()V
    // Max stack: 2, #locals: 0, #params: 0
    // Code length: 9 bytes, Code offset: 13996
    // Line Number Table found: 4 entries
    // RetValue   0 added: Name <returnValue> Type V At 0 9 Range 0 8 Init 0 fixed
    static void failUTFConversion()
        throws SQLException
    {
        NLSError.throwSQLException(17037, "failUTFConversion");
        return;
    }

    // Decompiling method: getOracleId  Signature: ()I
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 14065
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 5 Range 0 4 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type I At 0 5 Range 0 4 Init 0 fixed
    public int getOracleId()
    {
        return oracleId;
    }

    // Decompiling method: getRatioTo  Signature: (Loracle/sql/CharacterSet;)I
    // Max stack: 3, #locals: 2, #params: 2
    // Code length: 10 bytes, Code offset: 14108
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 10 Range 0 9 Init 0 fixed
    // Parameter  1 added: Name characterset Type Loracle/sql/CharacterSet; At 0 10 Range 0 9 Init 0
    // RetValue   2 added: Name <returnValue> Type I At 0 10 Range 0 9 Init 0 fixed
    public int getRatioTo(CharacterSet characterset)
    {
        throw new Error("oracle.sql.CharacterSet.getRationTo Not Implemented");
    }

    // Decompiling method: getRep  Signature: ()I
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 14156
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 5 Range 0 4 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type I At 0 5 Range 0 4 Init 0 fixed
    int getRep()
    {
        return rep;
    }

    // Decompiling method: hashCode  Signature: ()I
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 14199
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 5 Range 0 4 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type I At 0 5 Range 0 4 Init 0 fixed
    public int hashCode()
    {
        return oracleId;
    }

    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 0 Range 0 4294967295 Init 0 fixed
    // Parameter  1 added: Name characterset Type Loracle/sql/CharacterSet; At 0 0 Range 0 4294967295 Init 0
    // RetValue   2 added: Name <returnValue> Type Z At 0 0 Range 0 4294967295 Init 0 fixed
    public abstract boolean isConvertibleFrom(CharacterSet characterset);

    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 0 Range 0 4294967295 Init 0 fixed
    // Parameter  1 added: Name characterset Type Loracle/sql/CharacterSet; At 0 0 Range 0 4294967295 Init 0
    // RetValue   2 added: Name <returnValue> Type Z At 0 0 Range 0 4294967295 Init 0 fixed
    public abstract boolean isLossyFrom(CharacterSet characterset);

    // Decompiling method: isUnicode  Signature: ()Z
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 2 bytes, Code offset: 14258
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 2 Range 0 1 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Z At 0 2 Range 0 1 Init 0 fixed
    public boolean isUnicode()
    {
        return false;
    }

    // Decompiling method: isWellFormed  Signature: ([BII)Z
    // Max stack: 1, #locals: 4, #params: 4
    // Code length: 2 bytes, Code offset: 14298
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 2 Range 0 1 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 2 Range 0 1 Init 0
    // Parameter  2 added: Name i Type I At 0 2 Range 0 1 Init 0
    // Parameter  3 added: Name j Type I At 0 2 Range 0 1 Init 0
    // RetValue   4 added: Name <returnValue> Type Z At 0 2 Range 0 1 Init 0 fixed
    boolean isWellFormed(byte abyte0[], int i, int j)
    {
        return true;
    }

    // Decompiling method: javaCharsToAL16UTF16Bytes  Signature: ([CI[B)I
    // Max stack: 4, #locals: 6, #params: 3
    // Code length: 60 bytes, Code offset: 14338
    // Line Number Table found: 6 entries
    // Parameter  0 added: Name ac Type [C At 0 60 Range 0 59 Init 0
    // Parameter  1 added: Name i Type I At 0 60 Range 0 59 Init 0
    // Parameter  2 added: Name abyte0 Type [B At 0 60 Range 0 59 Init 0
    // RetValue   6 added: Name <returnValue> Type I At 0 60 Range 0 59 Init 0 fixed
    // LocalVar   5 added: Name j Type I At 8 44 Range 8 51 Init 8
    // LocalVar   3 added: Name flag Type Z At 11 39 Range 11 49 Init 11
    // LocalVar   4 added: Name flag1 Type Z At 13 44 Range 13 56 Init 13
    // LocalVar   3 chged: Name k Oname flag Type I At 49 1 Range 11 49 Init 11
    // LocalVar   4 chged: Name l Oname flag1 Type I At 55 2 Range 13 56 Init 13
    public static int javaCharsToAL16UTF16Bytes(char ac[], int i, byte abyte0[])
    {
        int l = Math.min(i, abyte0.length >>> 1);
        int j = 0;
        int k;
        for(k = 0; j < l; k += 2)
        {
            abyte0[k] = (byte)(ac[j] >>> 8);
            abyte0[k + 1] = (byte)(ac[j] & 0xff);
            j++;
        }

        return k + 1;
    }

    // Decompiling method: javaCharsToAL16UTF16LEBytes  Signature: ([CI[B)I
    // Max stack: 4, #locals: 6, #params: 3
    // Code length: 60 bytes, Code offset: 14456
    // Line Number Table found: 6 entries
    // Parameter  0 added: Name ac Type [C At 0 60 Range 0 59 Init 0
    // Parameter  1 added: Name i Type I At 0 60 Range 0 59 Init 0
    // Parameter  2 added: Name abyte0 Type [B At 0 60 Range 0 59 Init 0
    // RetValue   6 added: Name <returnValue> Type I At 0 60 Range 0 59 Init 0 fixed
    // LocalVar   5 added: Name j Type I At 8 44 Range 8 51 Init 8
    // LocalVar   3 added: Name flag Type Z At 11 39 Range 11 49 Init 11
    // LocalVar   4 added: Name flag1 Type Z At 13 44 Range 13 56 Init 13
    // LocalVar   3 chged: Name k Oname flag Type I At 49 1 Range 11 49 Init 11
    // LocalVar   4 chged: Name l Oname flag1 Type I At 55 2 Range 13 56 Init 13
    public static int javaCharsToAL16UTF16LEBytes(char ac[], int i, byte abyte0[])
    {
        int l = Math.min(i, abyte0.length >>> 1);
        int j = 0;
        int k;
        for(k = 0; j < l; k += 2)
        {
            abyte0[k] = (byte)(ac[j] & 0xff);
            abyte0[k + 1] = (byte)(ac[j] >>> 8);
            j++;
        }

        return k + 1;
    }

    // Decompiling method: javaCharsToAL32UTF8  Signature: ([CII[BI)I
    // Max stack: 5, #locals: 13, #params: 5
    // Code length: 463 bytes, Code offset: 14574
    // Line Number Table found: 67 entries
    // Parameter  0 added: Name ac Type [C At 0 463 Range 0 462 Init 0
    // Parameter  1 added: Name i Type I At 0 463 Range 0 462 Init 0
    // Parameter  2 added: Name j Type I At 0 463 Range 0 462 Init 0
    // Parameter  3 added: Name abyte0 Type [B At 0 463 Range 0 462 Init 0
    // Parameter  4 added: Name k Type I At 0 463 Range 0 462 Init 0
    // RetValue  13 added: Name <returnValue> Type I At 0 463 Range 0 462 Init 0 fixed
    // LocalVar   6 added: Name l Type I At 1 142 Range 1 142 Init 1
    // LocalVar   7 added: Name i1 Type I At 6 451 Range 6 456 Init 6
    // LocalVar   8 added: Name flag Type Z At 36 86 Range 36 121 Init 36
    // LocalVar   5 added: Name j1 Type I At 40 75 Range 40 114 Init 40
    // LocalVar   8 chged: Name k1 Oname flag Type I At 120 2 Range 36 121 Init 36
    // LocalVar   9 added: Name flag Type Z At 139 323 Range 139 461 Init 139
    // LocalVar   5 added: Name l1 Type I At 143 312 Range 143 454 Init 143
    // LocalVar   9 chged: Name i2 Oname flag Type I At 460 2 Range 139 461 Init 139
    // LocalVar   9 added: Name c Type C At 49 46 Range 49 94 Init 49
    // LocalVar  10 added: Name c1 Type C At 152 292 Range 152 443 Init 152
    // LocalVar  11 added: Name c2 Type C At 209 121 Range 209 329 Init 209
    // LocalVar  12 added: Name j2 Type I At 249 28 Range 249 276 Init 249
    static int javaCharsToAL32UTF8(char ac[], int i, int j, byte abyte0[], int k)
        throws SQLException
    {
        int j1 = i;
        int k1 = i + j;
        if(j1 < 0)
        {
            j1 = 0;
        }
        if(k1 > ac.length)
        {
            k1 = ac.length;
        }
        if(k < 0)
        {
            k = 0;
        }
        int l1 = 0;
        for(int l = j1; l < k1; l++)
        {
            char c = ac[l];
            if(c >= '\001' && c <= '\177')
            {
                l1++;
            } else
            if(c >= '\uD800' && c <= '\uDB00')
            {
                l1 += 4;
                l++;
            } else
            if(c > '\u07FF')
            {
                l1 += 3;
            } else
            {
                l1 += 2;
            }
        }

        if(l1 + k > abyte0.length)
        {
            NLSError.throwSQLException(17038, "JavaCharsToCHARBytes");
        }
        int i2 = 0;
        for(int i1 = j1; i1 < k1; i1++)
        {
            char c1 = ac[i1];
            if(c1 >= '\001' && c1 <= '\177')
            {
                abyte0[i2++] = (byte)c1;
            } else
            if(c1 >= '\uD800' && c1 <= '\uDB00')
            {
                if(i1 + 1 < k1)
                {
                    char c2 = ac[i1 + 1];
                    if((c2 >= '\uDC00') & (c2 <= '\uDF00'))
                    {
                        int j2 = (c1 >> 6 & 0xf) + 1;
                        abyte0[i2++] = (byte)(j2 >> 2 & 0x2 | 0xf0);
                        abyte0[i2++] = (byte)((j2 & 0x3) << 4 | c1 >> 2 & 0xf | 0x80);
                        abyte0[i2++] = (byte)((c1 & 0x3) << 4 | c2 >> 6 & 0xf | 0x80);
                        abyte0[i2++] = (byte)(c2 & 0x3f | 0x80);
                        i1++;
                    }
                }
            } else
            if(c1 > '\u07FF')
            {
                abyte0[i2++] = (byte)(0xe0 | c1 >> 12 & 0xf);
                abyte0[i2++] = (byte)(0x80 | c1 >> 6 & 0x3f);
                abyte0[i2++] = (byte)(0x80 | c1 & 0x3f);
            } else
            {
                abyte0[i2++] = (byte)(0xc0 | c1 >> 6 & 0x1f);
                abyte0[i2++] = (byte)(0x80 | c1 & 0x3f);
            }
        }

        return i2;
    }

    // Decompiling method: javaCharsToUTF  Signature: ([CII[BI)I
    // Max stack: 5, #locals: 11, #params: 5
    // Code length: 275 bytes, Code offset: 15349
    // Line Number Table found: 38 entries
    // Parameter  0 added: Name ac Type [C At 0 275 Range 0 274 Init 0
    // Parameter  1 added: Name i Type I At 0 275 Range 0 274 Init 0
    // Parameter  2 added: Name j Type I At 0 275 Range 0 274 Init 0
    // Parameter  3 added: Name abyte0 Type [B At 0 275 Range 0 274 Init 0
    // Parameter  4 added: Name k Type I At 0 275 Range 0 274 Init 0
    // RetValue  11 added: Name <returnValue> Type I At 0 275 Range 0 274 Init 0 fixed
    // LocalVar   6 added: Name l Type I At 1 119 Range 1 119 Init 1
    // LocalVar   7 added: Name i1 Type I At 6 263 Range 6 268 Init 6
    // LocalVar   8 added: Name flag Type Z At 36 63 Range 36 98 Init 36
    // LocalVar   5 added: Name j1 Type I At 40 52 Range 40 91 Init 40
    // LocalVar   8 chged: Name k1 Oname flag Type I At 97 2 Range 36 98 Init 36
    // LocalVar   9 added: Name flag Type Z At 116 158 Range 116 273 Init 116
    // LocalVar   5 added: Name l1 Type I At 120 147 Range 120 266 Init 120
    // LocalVar   9 chged: Name i2 Oname flag Type I At 272 2 Range 116 273 Init 116
    // LocalVar   9 added: Name c Type C At 49 23 Range 49 71 Init 49
    // LocalVar  10 added: Name c1 Type C At 129 127 Range 129 255 Init 129
    static int javaCharsToUTF(char ac[], int i, int j, byte abyte0[], int k)
        throws SQLException
    {
        int j1 = i;
        int k1 = i + j;
        if(j1 < 0)
        {
            j1 = 0;
        }
        if(k1 > ac.length)
        {
            k1 = ac.length;
        }
        if(k < 0)
        {
            k = 0;
        }
        int l1 = 0;
        for(int l = j1; l < k1; l++)
        {
            char c = ac[l];
            if(c >= '\001' && c <= '\177')
            {
                l1++;
            } else
            if(c > '\u07FF')
            {
                l1 += 3;
            } else
            {
                l1 += 2;
            }
        }

        if(l1 + k > abyte0.length)
        {
            NLSError.throwSQLException(17038, "JavaCharsToCHARBytes");
        }
        int i2 = 0;
        for(int i1 = j1; i1 < k1; i1++)
        {
            char c1 = ac[i1];
            if(c1 >= '\001' && c1 <= '\177')
            {
                abyte0[i2++] = (byte)c1;
            } else
            if(c1 > '\u07FF')
            {
                abyte0[i2++] = (byte)(0xe0 | c1 >> 12 & 0xf);
                abyte0[i2++] = (byte)(0x80 | c1 >> 6 & 0x3f);
                abyte0[i2++] = (byte)(0x80 | c1 & 0x3f);
            } else
            {
                abyte0[i2++] = (byte)(0xc0 | c1 >> 6 & 0x1f);
                abyte0[i2++] = (byte)(0x80 | c1 & 0x3f);
            }
        }

        return i2;
    }

    // Decompiling method: make  Signature: (I)Loracle/sql/CharacterSet;
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 15820
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name i Type I At 0 8 Range 0 7 Init 0
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/CharacterSet; At 0 8 Range 0 7 Init 0 fixed
    public static CharacterSet make(int i)
    {
        return factory.make(i);
    }

    // Decompiling method: need  Signature: (Loracle/sql/CharacterBuffer;I)V
    // Max stack: 5, #locals: 5, #params: 2
    // Code length: 57 bytes, Code offset: 15866
    // Line Number Table found: 10 entries
    // Parameter  0 added: Name characterbuffer Type Loracle/sql/CharacterBuffer; At 0 57 Range 0 56 Init 0
    // Parameter  1 added: Name i Type I At 0 57 Range 0 56 Init 0
    // RetValue   5 added: Name <returnValue> Type V At 0 57 Range 0 56 Init 0 fixed
    // LocalVar   2 added: Name j Type I At 5 31 Range 5 35 Init 5
    // LocalVar   3 added: Name k Type I At 12 12 Range 12 23 Init 12
    // LocalVar   4 added: Name abyte0 Type [B At 32 11 Range 32 42 Init 32
    static void need(CharacterBuffer characterbuffer, int i)
    {
        int j = characterbuffer.bytes.length;
        int k = i + characterbuffer.next;
        if(k >= j)
        {
            return;
        }
        for(; k < j; j = 2 * j) { }
        byte abyte0[] = characterbuffer.bytes;
        characterbuffer.bytes = new byte[j];
        System.arraycopy(abyte0, 0, characterbuffer.bytes, 0, characterbuffer.next);
        return;
    }

    // Decompiling method: stringToAL16UTF16Bytes  Signature: (Ljava/lang/String;)[B
    // Max stack: 3, #locals: 3, #params: 1
    // Code length: 22 bytes, Code offset: 15997
    // Line Number Table found: 4 entries
    // Parameter  0 added: Name s Type Ljava/lang/String; At 0 22 Range 0 21 Init 0
    // RetValue   3 added: Name <returnValue> Type [B At 0 22 Range 0 21 Init 0 fixed
    // LocalVar   1 added: Name ac Type [C At 4 10 Range 4 13 Init 4
    // LocalVar   2 added: Name abyte0 Type [B At 11 10 Range 11 20 Init 11
    public static byte[] stringToAL16UTF16Bytes(String s)
    {
        char ac[] = s.toCharArray();
        byte abyte0[] = new byte[ac.length * 2];
        javaCharsToAL16UTF16Bytes(ac, ac.length, abyte0);
        return abyte0;
    }

    // Decompiling method: stringToAL16UTF16LEBytes  Signature: (Ljava/lang/String;)[B
    // Max stack: 3, #locals: 3, #params: 1
    // Code length: 22 bytes, Code offset: 16069
    // Line Number Table found: 4 entries
    // Parameter  0 added: Name s Type Ljava/lang/String; At 0 22 Range 0 21 Init 0
    // RetValue   3 added: Name <returnValue> Type [B At 0 22 Range 0 21 Init 0 fixed
    // LocalVar   1 added: Name ac Type [C At 4 10 Range 4 13 Init 4
    // LocalVar   2 added: Name abyte0 Type [B At 11 10 Range 11 20 Init 11
    public static byte[] stringToAL16UTF16LEBytes(String s)
    {
        char ac[] = s.toCharArray();
        byte abyte0[] = new byte[ac.length * 2];
        javaCharsToAL16UTF16LEBytes(ac, ac.length, abyte0);
        return abyte0;
    }

    // Decompiling method: stringToAL32UTF8  Signature: (Ljava/lang/String;)[B
    // Max stack: 5, #locals: 4, #params: 1
    // Code length: 39 bytes, Code offset: 16141
    // Exception table: 1 entries
    //           start  24 end 33 handler 36 type SQLException
    // Line Number Table found: 9 entries
    // Parameter  0 added: Name s Type Ljava/lang/String; At 0 39 Range 0 38 Init 0
    // RetValue   4 added: Name <returnValue> Type [B At 0 39 Range 0 38 Init 0 fixed
    // LocalVar   1 added: Name i Type I At 4 23 Range 4 26 Init 4
    // LocalVar   2 added: Name abyte0 Type [B At 11 27 Range 11 37 Init 11
    // LocalVar   3 added: Name ac Type [C At 15 10 Range 15 24 Init 15
    static byte[] stringToAL32UTF8(String s)
    {
        int i = s.length();
        byte abyte0[] = new byte[stringUTFLength(s)];
        char ac[] = new char[i];
        s.getChars(0, i, ac, 0);
        try
        {
            javaCharsToAL32UTF8(ac, 0, i, abyte0, 0);
        }
        catch(SQLException _ex) { }
        return abyte0;
    }

    // Decompiling method: stringToUTF  Signature: (Ljava/lang/String;)[B
    // Max stack: 5, #locals: 4, #params: 1
    // Code length: 39 bytes, Code offset: 16258
    // Exception table: 1 entries
    //           start  24 end 33 handler 36 type SQLException
    // Line Number Table found: 9 entries
    // Parameter  0 added: Name s Type Ljava/lang/String; At 0 39 Range 0 38 Init 0
    // RetValue   4 added: Name <returnValue> Type [B At 0 39 Range 0 38 Init 0 fixed
    // LocalVar   1 added: Name i Type I At 4 23 Range 4 26 Init 4
    // LocalVar   2 added: Name abyte0 Type [B At 11 27 Range 11 37 Init 11
    // LocalVar   3 added: Name ac Type [C At 15 10 Range 15 24 Init 15
    static byte[] stringToUTF(String s)
    {
        int i = s.length();
        byte abyte0[] = new byte[stringUTFLength(s)];
        char ac[] = new char[i];
        s.getChars(0, i, ac, 0);
        try
        {
            javaCharsToUTF(ac, 0, i, abyte0, 0);
        }
        catch(SQLException _ex) { }
        return abyte0;
    }

    // Decompiling method: stringUTFLength  Signature: (Ljava/lang/String;)I
    // Max stack: 2, #locals: 5, #params: 1
    // Code length: 65 bytes, Code offset: 16375
    // Line Number Table found: 13 entries
    // Parameter  0 added: Name s Type Ljava/lang/String; At 0 65 Range 0 64 Init 0
    // RetValue   5 added: Name <returnValue> Type I At 0 65 Range 0 64 Init 0 fixed
    // LocalVar   1 added: Name flag Type Z At 1 63 Range 1 63 Init 1
    // LocalVar   2 added: Name i Type I At 6 54 Range 6 59 Init 6
    // LocalVar   3 added: Name flag1 Type Z At 8 51 Range 8 58 Init 8
    // LocalVar   3 chged: Name j Oname flag1 Type I At 58 1 Range 8 58 Init 8
    // LocalVar   1 chged: Name k Oname flag Type I At 63 1 Range 1 63 Init 1
    // LocalVar   4 added: Name c Type C At 17 23 Range 17 39 Init 17
    static int stringUTFLength(String s)
    {
        int i = 0;
        int j = s.length();
        for(int k = 0; k < j; k++)
        {
            char c = s.charAt(k);
            if(c >= '\001' && c <= '\177')
            {
                i++;
            } else
            if(c > '\u07FF')
            {
                i += 3;
            } else
            {
                i += 2;
            }
        }

        return i;
    }

    // Decompiling method: toString  Signature: ()Ljava/lang/String;
    // Max stack: 3, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 16526
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Ljava/lang/String; At 0 20 Range 0 19 Init 0 fixed
    public String toString()
    {
        return "oracle-character-set-" + oracleId;
    }

    // Decompiling method: toString  Signature: ([BII)Ljava/lang/String;
    // Max stack: 4, #locals: 7, #params: 4
    // Code length: 63 bytes, Code offset: 16584
    // Line Number Table found: 9 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 63 Range 0 62 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 63 Range 0 62 Init 0
    // Parameter  2 added: Name i Type I At 0 63 Range 0 62 Init 0
    // Parameter  3 added: Name j Type I At 0 63 Range 0 62 Init 0
    // RetValue   7 added: Name <returnValue> Type Ljava/lang/String; At 0 63 Range 0 62 Init 0 fixed
    // LocalVar   4 added: Name s Type Ljava/lang/String; At 7 5 Range 7 11 Init 7
    // LocalVar   5 added: Name abyte1 Type [B At 15 21 Range 15 35 Init 15
    // LocalVar   6 added: Name flag Type Z At 29 28 Range 29 56 Init 29
    // LocalVar   6 chged: Name k Oname flag Type I At 55 2 Range 29 56 Init 29
    public String toString(byte abyte0[], int i, int j)
        throws SQLException
    {
        String s = toStringWithReplacement(abyte0, i, j);
        byte abyte1[] = convert(s);
        if(j != abyte1.length)
        {
            failCharacterConversion(this);
        }
        for(int k = 0; k < j; k++)
        {
            if(abyte1[k] != abyte0[i + k])
            {
                failCharacterConversion(this);
            }
        }

        return null;
    }

    // Parameter  0 added: Name this Type Loracle/sql/CharacterSet; At 0 0 Range 0 4294967295 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 0 Range 0 4294967295 Init 0
    // Parameter  2 added: Name i Type I At 0 0 Range 0 4294967295 Init 0
    // Parameter  3 added: Name j Type I At 0 0 Range 0 4294967295 Init 0
    // RetValue   4 added: Name <returnValue> Type Ljava/lang/String; At 0 0 Range 0 4294967295 Init 0 fixed
    public abstract String toStringWithReplacement(byte abyte0[], int i, int j);

    // Decompiling method: useOrCopy  Signature: ([BII)[B
    // Max stack: 5, #locals: 4, #params: 3
    // Code length: 29 bytes, Code offset: 16735
    // Line Number Table found: 6 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 29 Range 0 28 Init 0
    // Parameter  1 added: Name i Type I At 0 29 Range 0 28 Init 0
    // Parameter  2 added: Name j Type I At 0 29 Range 0 28 Init 0
    // RetValue   4 added: Name <returnValue> Type [B At 0 29 Range 0 28 Init 0 fixed
    // LocalVar   3 added: Name abyte1 Type [B At 11 17 Range 11 27 Init 11
    static byte[] useOrCopy(byte abyte0[], int i, int j)
    {
        byte abyte1[];
        if(abyte0.length == j && i == 0)
        {
            abyte1 = abyte0;
        } else
        {
            abyte1 = new byte[j];
            System.arraycopy(abyte0, i, abyte1, 0, j);
        }
        return abyte1;
    }

    // Decompiling method: <clinit>  Signature: ()V
    // Max stack: 2, #locals: 0, #params: 0
    // Code length: 11 bytes, Code offset: 11663
    // Line Number Table found: 2 entries
    // RetValue   0 added: Name <returnValue> Type V At 0 11 Range 0 10 Init 0 fixed
    static 
    {
        /* factory = new CharacterSetFactoryDefault(); */
    }
}
