// 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:   ARRAY.java
// Class Version:      45.3

package oracle.sql;

import java.sql.Array;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
import oracle.jdbc.OracleConnection;
import oracle.jdbc.dbaccess.DBError;

// Referenced classes of package oracle.sql:
//            Datum, ArrayDescriptor, TypeDescriptor

// flag ACC_SUPER is set
public class ARRAY extends Datum
    implements Array
{
    // Constants:          260
    // Interfaces:         1
    // Fields:             18
    // Methods:            56
    // Class Attributes:   1


    static boolean DEBUG = false;
    ArrayDescriptor m_descriptor;
    OracleConnection m_conn;
    Object m_objArray;
    Datum m_datumArray[];
    byte m_locator[];
    int m_numElems;
    boolean m_enableBuffering;
    boolean m_enableIndexing;
    public static final int ACCESS_FORWARD = 1;
    public static final int ACCESS_REVERSE = 2;
    public static final int ACCESS_UNKNOWN = 3;
    int m_accessDirection;
    long m_lastIndex;
    long m_lastOffset;
    long m_indexArray[];
    long m_imgOffset;
    long m_imgLength;

    // Decompiling method: <init>  Signature: (Loracle/sql/ArrayDescriptor;Ljava/sql/Connection;Ljava/lang/Object;)V
    // Max stack: 6, #locals: 4, #params: 4
    // Code length: 95 bytes, Code offset: 3587
    // Line Number Table found: 18 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 95 Range 0 94 Init 0 fixed
    // Parameter  1 added: Name arraydescriptor Type Loracle/sql/ArrayDescriptor; At 0 95 Range 0 94 Init 0
    // Parameter  2 added: Name connection Type Ljava/sql/Connection; At 0 95 Range 0 94 Init 0
    // Parameter  3 added: Name obj Type Ljava/lang/Object; At 0 95 Range 0 94 Init 0
    // RetValue   4 added: Name <returnValue> Type V At 0 95 Range 0 94 Init 0 fixed
    public ARRAY(ArrayDescriptor arraydescriptor, Connection connection, Object obj)
        throws SQLException
    {
        super();
        m_numElems = -1;
        m_enableBuffering = false;
        m_enableIndexing = false;
        m_accessDirection = 3;
        if(arraydescriptor != null)
        {
            m_descriptor = arraydescriptor;
        } else
        {
            DBError.check_error(61, "ARRAY");
        }
        if(connection != null)
        {
            m_conn = (OracleConnection)connection;
        } else
        {
            DBError.check_error(8, "Connection is null");
        }
        if(obj == null)
        {
            m_datumArray = new Datum[0];
        } else
        {
            m_datumArray = m_descriptor.toOracleArray(obj, 1L, -1);
        }
        return;
    }

    // Decompiling method: <init>  Signature: (Loracle/sql/ArrayDescriptor;[BLjava/sql/Connection;)V
    // Max stack: 2, #locals: 4, #params: 4
    // Code length: 63 bytes, Code offset: 3798
    // Line Number Table found: 13 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 63 Range 0 62 Init 0 fixed
    // Parameter  1 added: Name arraydescriptor Type Loracle/sql/ArrayDescriptor; At 0 63 Range 0 62 Init 0
    // Parameter  2 added: Name abyte0 Type [B At 0 63 Range 0 62 Init 0
    // Parameter  3 added: Name connection Type Ljava/sql/Connection; At 0 63 Range 0 62 Init 0
    // RetValue   4 added: Name <returnValue> Type V At 0 63 Range 0 62 Init 0 fixed
    public ARRAY(ArrayDescriptor arraydescriptor, byte abyte0[], Connection connection)
        throws SQLException
    {
        super(abyte0);
        m_numElems = -1;
        m_enableBuffering = false;
        m_enableIndexing = false;
        m_accessDirection = 3;
        if(connection != null)
        {
            m_conn = (OracleConnection)connection;
        } else
        {
            DBError.check_error(8, "Connection is null");
        }
        m_descriptor = arraydescriptor;
        m_datumArray = null;
        m_locator = null;
        return;
    }

    // Decompiling method: getAccessDirection  Signature: ()I
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 3957
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; 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 getAccessDirection()
        throws SQLException
    {
        return m_accessDirection;
    }

    // Decompiling method: getArray  Signature: ()Ljava/lang/Object;
    // Max stack: 7, #locals: 1, #params: 1
    // Code length: 19 bytes, Code offset: 4010
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 19 Range 0 18 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Ljava/lang/Object; At 0 19 Range 0 18 Init 0 fixed
    public synchronized Object getArray()
        throws SQLException
    {
        return ((Object) (m_descriptor.toJavaArray(this, 1L, -1, getMap(), m_enableBuffering)));
    }

    // Decompiling method: getArray  Signature: (JI)Ljava/lang/Object;
    // Max stack: 7, #locals: 4, #params: 4
    // Code length: 33 bytes, Code offset: 4085
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 33 Range 0 32 Init 0 fixed
    // Parameter  1 added: Name l Type J At 0 33 Range 0 32 Init 0
    // Parameter  3 added: Name i Type I At 0 33 Range 0 32 Init 0
    // RetValue   4 added: Name <returnValue> Type Ljava/lang/Object; At 0 33 Range 0 32 Init 0 fixed
    public synchronized Object getArray(long l, int i)
        throws SQLException
    {
        if(l < 1L || i < 0)
        {
            DBError.check_error(68, "getArray()");
        }
        return ((Object) (m_descriptor.toJavaArray(this, l, i, getMap(), false)));
    }

    // Decompiling method: getArray  Signature: (JILjava/util/Map;)Ljava/lang/Object;
    // Max stack: 7, #locals: 5, #params: 5
    // Code length: 31 bytes, Code offset: 4174
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 31 Range 0 30 Init 0 fixed
    // Parameter  1 added: Name l Type J At 0 31 Range 0 30 Init 0
    // Parameter  3 added: Name i Type I At 0 31 Range 0 30 Init 0
    // Parameter  4 added: Name map Type Ljava/util/Map; At 0 31 Range 0 30 Init 0
    // RetValue   5 added: Name <returnValue> Type Ljava/lang/Object; At 0 31 Range 0 30 Init 0 fixed
    public synchronized Object getArray(long l, int i, Map map)
        throws SQLException
    {
        if(l < 1L || i < 0)
        {
            DBError.check_error(68, "getArray()");
        }
        return ((Object) (m_descriptor.toJavaArray(this, l, i, map, false)));
    }

    // Decompiling method: getArray  Signature: (Ljava/util/Map;)Ljava/lang/Object;
    // Max stack: 7, #locals: 2, #params: 2
    // Code length: 16 bytes, Code offset: 4261
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 16 Range 0 15 Init 0 fixed
    // Parameter  1 added: Name map Type Ljava/util/Map; At 0 16 Range 0 15 Init 0
    // RetValue   2 added: Name <returnValue> Type Ljava/lang/Object; At 0 16 Range 0 15 Init 0 fixed
    public synchronized Object getArray(Map map)
        throws SQLException
    {
        return ((Object) (m_descriptor.toJavaArray(this, 1L, -1, map, m_enableBuffering)));
    }

    // Decompiling method: getAutoBuffering  Signature: ()Z
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 4325
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 5 Range 0 4 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Z At 0 5 Range 0 4 Init 0 fixed
    public boolean getAutoBuffering()
        throws SQLException
    {
        return m_enableBuffering;
    }

    // Decompiling method: getAutoIndexing  Signature: ()Z
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 4378
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 5 Range 0 4 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Z At 0 5 Range 0 4 Init 0 fixed
    public boolean getAutoIndexing()
        throws SQLException
    {
        return m_enableIndexing;
    }

    // Decompiling method: getBaseType  Signature: ()I
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 4431
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type I At 0 8 Range 0 7 Init 0 fixed
    public synchronized int getBaseType()
        throws SQLException
    {
        return m_descriptor.getBaseType();
    }

    // Decompiling method: getBaseTypeName  Signature: ()Ljava/lang/String;
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 4487
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Ljava/lang/String; At 0 8 Range 0 7 Init 0 fixed
    public synchronized String getBaseTypeName()
        throws SQLException
    {
        return m_descriptor.getBaseName();
    }

    // Decompiling method: getConnection  Signature: ()Loracle/jdbc/driver/OracleConnection;
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 16 bytes, Code offset: 4543
    // Exception table: 1 entries
    //           start  0 end 8 handler 8 type ClassCastException
    // Line Number Table found: 5 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 16 Range 0 15 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/jdbc/driver/OracleConnection; At 0 16 Range 0 15 Init 0 fixed
    public oracle.jdbc.driver.OracleConnection getConnection()
        throws SQLException
    {
        try
        {
            return (oracle.jdbc.driver.OracleConnection)getJavaSqlConnection();
        }
        catch(ClassCastException _ex)
        {
            DBError.throwSqlException(103);
        }
        return null;
    }

    // Decompiling method: getDescriptor  Signature: ()Loracle/sql/ArrayDescriptor;
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 4637
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 5 Range 0 4 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/ArrayDescriptor; At 0 5 Range 0 4 Init 0 fixed
    public ArrayDescriptor getDescriptor()
        throws SQLException
    {
        return m_descriptor;
    }

    // Decompiling method: getDoubleArray  Signature: ()[D
    // Max stack: 7, #locals: 1, #params: 1
    // Code length: 19 bytes, Code offset: 4690
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 19 Range 0 18 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type [D At 0 19 Range 0 18 Init 0 fixed
    public synchronized double[] getDoubleArray()
        throws SQLException
    {
        return (double[])m_descriptor.toNumericArray(this, 1L, -1, 5, m_enableBuffering);
    }

    // Decompiling method: getDoubleArray  Signature: (JI)[D
    // Max stack: 7, #locals: 4, #params: 4
    // Code length: 16 bytes, Code offset: 4765
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 16 Range 0 15 Init 0 fixed
    // Parameter  1 added: Name l Type J At 0 16 Range 0 15 Init 0
    // Parameter  3 added: Name i Type I At 0 16 Range 0 15 Init 0
    // RetValue   4 added: Name <returnValue> Type [D At 0 16 Range 0 15 Init 0 fixed
    public synchronized double[] getDoubleArray(long l, int i)
        throws SQLException
    {
        return (double[])m_descriptor.toNumericArray(this, l, i, 5, false);
    }

    // Decompiling method: getFloatArray  Signature: ()[F
    // Max stack: 7, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 4837
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type [F At 0 20 Range 0 19 Init 0 fixed
    public synchronized float[] getFloatArray()
        throws SQLException
    {
        return (float[])m_descriptor.toNumericArray(this, 1L, -1, 6, m_enableBuffering);
    }

    // Decompiling method: getFloatArray  Signature: (JI)[F
    // Max stack: 7, #locals: 4, #params: 4
    // Code length: 17 bytes, Code offset: 4913
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 17 Range 0 16 Init 0 fixed
    // Parameter  1 added: Name l Type J At 0 17 Range 0 16 Init 0
    // Parameter  3 added: Name i Type I At 0 17 Range 0 16 Init 0
    // RetValue   4 added: Name <returnValue> Type [F At 0 17 Range 0 16 Init 0 fixed
    public synchronized float[] getFloatArray(long l, int i)
        throws SQLException
    {
        return (float[])m_descriptor.toNumericArray(this, l, i, 6, false);
    }

    // Decompiling method: getImageLength  Signature: ()J
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 4986
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 5 Range 0 4 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type J At 0 5 Range 0 4 Init 0 fixed
    public long getImageLength()
    {
        return m_imgLength;
    }

    // Decompiling method: getImageOffset  Signature: ()J
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 5029
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 5 Range 0 4 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type J At 0 5 Range 0 4 Init 0 fixed
    public long getImageOffset()
    {
        return m_imgOffset;
    }

    // Decompiling method: getIntArray  Signature: ()[I
    // Max stack: 7, #locals: 1, #params: 1
    // Code length: 19 bytes, Code offset: 5072
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 19 Range 0 18 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type [I At 0 19 Range 0 18 Init 0 fixed
    public synchronized int[] getIntArray()
        throws SQLException
    {
        return (int[])m_descriptor.toNumericArray(this, 1L, -1, 4, m_enableBuffering);
    }

    // Decompiling method: getIntArray  Signature: (JI)[I
    // Max stack: 7, #locals: 4, #params: 4
    // Code length: 16 bytes, Code offset: 5147
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 16 Range 0 15 Init 0 fixed
    // Parameter  1 added: Name l Type J At 0 16 Range 0 15 Init 0
    // Parameter  3 added: Name i Type I At 0 16 Range 0 15 Init 0
    // RetValue   4 added: Name <returnValue> Type [I At 0 16 Range 0 15 Init 0 fixed
    public synchronized int[] getIntArray(long l, int i)
        throws SQLException
    {
        return (int[])m_descriptor.toNumericArray(this, l, i, 4, false);
    }

    // Decompiling method: getJavaSqlConnection  Signature: ()Ljava/sql/Connection;
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 5219
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 5 Range 0 4 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Ljava/sql/Connection; At 0 5 Range 0 4 Init 0 fixed
    public Connection getJavaSqlConnection()
        throws SQLException
    {
        return m_conn;
    }

    // Decompiling method: getLastIndex  Signature: ()J
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 5272
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 5 Range 0 4 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type J At 0 5 Range 0 4 Init 0 fixed
    public long getLastIndex()
        throws SQLException
    {
        return m_lastIndex;
    }

    // Decompiling method: getLastOffset  Signature: ()J
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 5325
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 5 Range 0 4 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type J At 0 5 Range 0 4 Init 0 fixed
    public long getLastOffset()
        throws SQLException
    {
        return m_lastOffset;
    }

    // Decompiling method: getLocator  Signature: ()[B
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 5378
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 5 Range 0 4 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type [B At 0 5 Range 0 4 Init 0 fixed
    public byte[] getLocator()
    {
        return m_locator;
    }

    // Decompiling method: getLongArray  Signature: ()[J
    // Max stack: 7, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 5421
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type [J At 0 20 Range 0 19 Init 0 fixed
    public synchronized long[] getLongArray()
        throws SQLException
    {
        return (long[])m_descriptor.toNumericArray(this, 1L, -1, 7, m_enableBuffering);
    }

    // Decompiling method: getLongArray  Signature: (JI)[J
    // Max stack: 7, #locals: 4, #params: 4
    // Code length: 17 bytes, Code offset: 5497
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 17 Range 0 16 Init 0 fixed
    // Parameter  1 added: Name l Type J At 0 17 Range 0 16 Init 0
    // Parameter  3 added: Name i Type I At 0 17 Range 0 16 Init 0
    // RetValue   4 added: Name <returnValue> Type [J At 0 17 Range 0 16 Init 0 fixed
    public synchronized long[] getLongArray(long l, int i)
        throws SQLException
    {
        return (long[])m_descriptor.toNumericArray(this, l, i, 7, false);
    }

    // Decompiling method: getMap  Signature: ()Ljava/util/Map;
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 10 bytes, Code offset: 5570
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 10 Range 0 9 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Ljava/util/Map; At 0 10 Range 0 9 Init 0 fixed
    public Map getMap()
        throws SQLException
    {
        return getConnection().getTypeMap();
    }

    // Decompiling method: getOffset  Signature: (J)J
    // Max stack: 3, #locals: 3, #params: 3
    // Code length: 21 bytes, Code offset: 5628
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 21 Range 0 20 Init 0 fixed
    // Parameter  1 added: Name l Type J At 0 21 Range 0 20 Init 0
    // RetValue   3 added: Name <returnValue> Type J At 0 21 Range 0 20 Init 0 fixed
    public long getOffset(long l)
        throws SQLException
    {
        if(m_indexArray == null)
        {
            return -1L;
        } else
        {
            return m_indexArray[(int)l - 1];
        }
    }

    // Decompiling method: getOracleArray  Signature: ()[Loracle/sql/Datum;
    // Max stack: 6, #locals: 1, #params: 1
    // Code length: 15 bytes, Code offset: 5705
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 15 Range 0 14 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type [Loracle/sql/Datum; At 0 15 Range 0 14 Init 0 fixed
    public synchronized Datum[] getOracleArray()
        throws SQLException
    {
        return m_descriptor.toOracleArray(this, 1L, -1, m_enableBuffering);
    }

    // Decompiling method: getOracleArray  Signature: (JI)[Loracle/sql/Datum;
    // Max stack: 6, #locals: 4, #params: 4
    // Code length: 29 bytes, Code offset: 5768
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 29 Range 0 28 Init 0 fixed
    // Parameter  1 added: Name l Type J At 0 29 Range 0 28 Init 0
    // Parameter  3 added: Name i Type I At 0 29 Range 0 28 Init 0
    // RetValue   4 added: Name <returnValue> Type [Loracle/sql/Datum; At 0 29 Range 0 28 Init 0 fixed
    public synchronized Datum[] getOracleArray(long l, int i)
        throws SQLException
    {
        if(l < 1L || i < 0)
        {
            DBError.check_error(68, "getOracleArray()");
        }
        return m_descriptor.toOracleArray(this, l, i, false);
    }

    // Decompiling method: getResultSet  Signature: ()Ljava/sql/ResultSet;
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 14 bytes, Code offset: 5853
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 14 Range 0 13 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Ljava/sql/ResultSet; At 0 14 Range 0 13 Init 0 fixed
    public synchronized ResultSet getResultSet()
        throws SQLException
    {
        return getResultSet(m_conn.getTypeMap());
    }

    // Decompiling method: getResultSet  Signature: (JI)Ljava/sql/ResultSet;
    // Max stack: 5, #locals: 4, #params: 4
    // Code length: 16 bytes, Code offset: 5915
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 16 Range 0 15 Init 0 fixed
    // Parameter  1 added: Name l Type J At 0 16 Range 0 15 Init 0
    // Parameter  3 added: Name i Type I At 0 16 Range 0 15 Init 0
    // RetValue   4 added: Name <returnValue> Type Ljava/sql/ResultSet; At 0 16 Range 0 15 Init 0 fixed
    public synchronized ResultSet getResultSet(long l, int i)
        throws SQLException
    {
        return getResultSet(l, i, m_conn.getTypeMap());
    }

    // Decompiling method: getResultSet  Signature: (JILjava/util/Map;)Ljava/sql/ResultSet;
    // Max stack: 7, #locals: 5, #params: 5
    // Code length: 32 bytes, Code offset: 5979
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 32 Range 0 31 Init 0 fixed
    // Parameter  1 added: Name l Type J At 0 32 Range 0 31 Init 0
    // Parameter  3 added: Name i Type I At 0 32 Range 0 31 Init 0
    // Parameter  4 added: Name map Type Ljava/util/Map; At 0 32 Range 0 31 Init 0
    // RetValue   5 added: Name <returnValue> Type Ljava/sql/ResultSet; At 0 32 Range 0 31 Init 0 fixed
    public synchronized ResultSet getResultSet(long l, int i, Map map)
        throws SQLException
    {
        if(l < 1L || i < -1)
        {
            DBError.check_error(68, "getResultSet()");
        }
        return m_descriptor.toResultSet(this, l, i, map, false);
    }

    // Decompiling method: getResultSet  Signature: (Ljava/util/Map;)Ljava/sql/ResultSet;
    // Max stack: 7, #locals: 2, #params: 2
    // Code length: 16 bytes, Code offset: 6067
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 16 Range 0 15 Init 0 fixed
    // Parameter  1 added: Name map Type Ljava/util/Map; At 0 16 Range 0 15 Init 0
    // RetValue   2 added: Name <returnValue> Type Ljava/sql/ResultSet; At 0 16 Range 0 15 Init 0 fixed
    public synchronized ResultSet getResultSet(Map map)
        throws SQLException
    {
        return m_descriptor.toResultSet(this, 1L, -1, map, m_enableBuffering);
    }

    // Decompiling method: getSQLTypeName  Signature: ()Ljava/lang/String;
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 24 bytes, Code offset: 6131
    // Line Number Table found: 4 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 24 Range 0 23 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Ljava/lang/String; At 0 24 Range 0 23 Init 0 fixed
    public synchronized String getSQLTypeName()
        throws SQLException
    {
        if(m_descriptor != null)
        {
            return m_descriptor.getName();
        } else
        {
            DBError.check_error(61, "ARRAY");
            return null;
        }
    }

    // Decompiling method: getShortArray  Signature: ()[S
    // Max stack: 7, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 6215
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type [S At 0 20 Range 0 19 Init 0 fixed
    public synchronized short[] getShortArray()
        throws SQLException
    {
        return (short[])m_descriptor.toNumericArray(this, 1L, -1, 8, m_enableBuffering);
    }

    // Decompiling method: getShortArray  Signature: (JI)[S
    // Max stack: 7, #locals: 4, #params: 4
    // Code length: 17 bytes, Code offset: 6291
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 17 Range 0 16 Init 0 fixed
    // Parameter  1 added: Name l Type J At 0 17 Range 0 16 Init 0
    // Parameter  3 added: Name i Type I At 0 17 Range 0 16 Init 0
    // RetValue   4 added: Name <returnValue> Type [S At 0 17 Range 0 16 Init 0 fixed
    public synchronized short[] getShortArray(long l, int i)
        throws SQLException
    {
        return (short[])m_descriptor.toNumericArray(this, l, i, 8, false);
    }

    // Decompiling method: hasDataSeg  Signature: ()Z
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 13 bytes, Code offset: 6364
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 13 Range 0 12 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Z At 0 13 Range 0 12 Init 0 fixed
    public boolean hasDataSeg()
    {
        return m_locator == null;
    }

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

    // Decompiling method: length  Signature: ()I
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 9 bytes, Code offset: 6455
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 9 Range 0 8 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type I At 0 9 Range 0 8 Init 0 fixed
    public synchronized int length()
        throws SQLException
    {
        return m_descriptor.toLength(this);
    }

    // Decompiling method: makeJdbcArray  Signature: (I)Ljava/lang/Object;
    // Max stack: 1, #locals: 2, #params: 2
    // Code length: 6 bytes, Code offset: 6512
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 6 Range 0 5 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 6 Range 0 5 Init 0
    // RetValue   2 added: Name <returnValue> Type Ljava/lang/Object; At 0 6 Range 0 5 Init 0 fixed
    public Object makeJdbcArray(int i)
    {
        return ((Object) (new Object[i][]));
    }

    // Decompiling method: setAutoBuffering  Signature: (Z)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 6 bytes, Code offset: 6556
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 6 Range 0 5 Init 0 fixed
    // Parameter  1 added: Name flag Type Z At 0 6 Range 0 5 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 6 Range 0 5 Init 0 fixed
    public synchronized void setAutoBuffering(boolean flag)
        throws SQLException
    {
        m_enableBuffering = flag;
        return;
    }

    // Decompiling method: setAutoIndexing  Signature: (Z)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 11 bytes, Code offset: 6614
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 11 Range 0 10 Init 0 fixed
    // Parameter  1 added: Name flag Type Z At 0 11 Range 0 10 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 11 Range 0 10 Init 0 fixed
    public synchronized void setAutoIndexing(boolean flag)
        throws SQLException
    {
        m_enableIndexing = flag;
        m_accessDirection = 3;
        return;
    }

    // Decompiling method: setAutoIndexing  Signature: (ZI)V
    // Max stack: 2, #locals: 3, #params: 3
    // Code length: 11 bytes, Code offset: 6681
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 11 Range 0 10 Init 0 fixed
    // Parameter  1 added: Name flag Type Z At 0 11 Range 0 10 Init 0
    // Parameter  2 added: Name i Type I At 0 11 Range 0 10 Init 0
    // RetValue   3 added: Name <returnValue> Type V At 0 11 Range 0 10 Init 0 fixed
    public synchronized void setAutoIndexing(boolean flag, int i)
        throws SQLException
    {
        m_enableIndexing = flag;
        m_accessDirection = i;
        return;
    }

    // Decompiling method: setDatumArray  Signature: ([Loracle/sql/Datum;)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 6 bytes, Code offset: 6748
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 6 Range 0 5 Init 0 fixed
    // Parameter  1 added: Name adatum Type [Loracle/sql/Datum; At 0 6 Range 0 5 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 6 Range 0 5 Init 0 fixed
    public synchronized void setDatumArray(Datum adatum[])
    {
        m_datumArray = adatum;
        return;
    }

    // Decompiling method: setImage  Signature: ([BJJ)V
    // Max stack: 3, #locals: 6, #params: 6
    // Code length: 17 bytes, Code offset: 6796
    // Line Number Table found: 4 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 17 Range 0 16 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 17 Range 0 16 Init 0
    // Parameter  2 added: Name l Type J At 0 17 Range 0 16 Init 0
    // Parameter  4 added: Name l1 Type J At 0 17 Range 0 16 Init 0
    // RetValue   6 added: Name <returnValue> Type V At 0 17 Range 0 16 Init 0 fixed
    public void setImage(byte abyte0[], long l, long l1)
        throws SQLException
    {
        setShareBytes(abyte0);
        m_imgOffset = l;
        m_imgLength = l1;
        return;
    }

    // Decompiling method: setImageLength  Signature: (J)V
    // Max stack: 3, #locals: 3, #params: 3
    // Code length: 6 bytes, Code offset: 6873
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 6 Range 0 5 Init 0 fixed
    // Parameter  1 added: Name l Type J At 0 6 Range 0 5 Init 0
    // RetValue   3 added: Name <returnValue> Type V At 0 6 Range 0 5 Init 0 fixed
    public void setImageLength(long l)
        throws SQLException
    {
        m_imgLength = l;
        return;
    }

    // Decompiling method: setIndexOffset  Signature: (JJ)V
    // Max stack: 4, #locals: 5, #params: 5
    // Code length: 28 bytes, Code offset: 6931
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 28 Range 0 27 Init 0 fixed
    // Parameter  1 added: Name l Type J At 0 28 Range 0 27 Init 0
    // Parameter  3 added: Name l1 Type J At 0 28 Range 0 27 Init 0
    // RetValue   5 added: Name <returnValue> Type V At 0 28 Range 0 27 Init 0 fixed
    public void setIndexOffset(long l, long l1)
        throws SQLException
    {
        if(m_indexArray == null)
        {
            m_indexArray = new long[m_numElems];
        }
        m_indexArray[(int)l - 1] = l1;
        return;
    }

    // Decompiling method: setLastIndexOffset  Signature: (JJ)V
    // Max stack: 3, #locals: 5, #params: 5
    // Code length: 11 bytes, Code offset: 7015
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 11 Range 0 10 Init 0 fixed
    // Parameter  1 added: Name l Type J At 0 11 Range 0 10 Init 0
    // Parameter  3 added: Name l1 Type J At 0 11 Range 0 10 Init 0
    // RetValue   5 added: Name <returnValue> Type V At 0 11 Range 0 10 Init 0 fixed
    public void setLastIndexOffset(long l, long l1)
        throws SQLException
    {
        m_lastIndex = l;
        m_lastOffset = l1;
        return;
    }

    // Decompiling method: setLength  Signature: (I)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 6 bytes, Code offset: 7082
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 6 Range 0 5 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 6 Range 0 5 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 6 Range 0 5 Init 0 fixed
    public synchronized void setLength(int i)
    {
        m_numElems = i;
        return;
    }

    // Decompiling method: setLocator  Signature: ([B)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 15 bytes, Code offset: 7126
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 15 Range 0 14 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 15 Range 0 14 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 15 Range 0 14 Init 0 fixed
    public synchronized void setLocator(byte abyte0[])
    {
        if(abyte0 != null && abyte0.length != 0)
        {
            m_locator = abyte0;
        }
        return;
    }

    // Decompiling method: setObjArray  Signature: (Ljava/lang/Object;)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 14 bytes, Code offset: 7187
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 14 Range 0 13 Init 0 fixed
    // Parameter  1 added: Name obj Type Ljava/lang/Object; At 0 14 Range 0 13 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 14 Range 0 13 Init 0 fixed
    public synchronized void setObjArray(Object obj)
        throws SQLException
    {
        if(obj == null)
        {
            DBError.throwSqlException(1);
        }
        m_objArray = obj;
        return;
    }

    // Decompiling method: toBytes  Signature: ()[B
    // Max stack: 3, #locals: 1, #params: 1
    // Code length: 13 bytes, Code offset: 7257
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 13 Range 0 12 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type [B At 0 13 Range 0 12 Init 0 fixed
    public synchronized byte[] toBytes()
        throws SQLException
    {
        return m_descriptor.toBytes(this, m_enableBuffering);
    }

    // Decompiling method: toJdbc  Signature: ()Ljava/lang/Object;
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 2 bytes, Code offset: 7318
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/ARRAY; At 0 2 Range 0 1 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Ljava/lang/Object; At 0 2 Range 0 1 Init 0 fixed
    public Object toJdbc()
        throws SQLException
    {
        return this;
    }

    // Decompiling method: <clinit>  Signature: ()V
    // Max stack: 1, #locals: 0, #params: 0
    // Code length: 5 bytes, Code offset: 3540
    // Line Number Table found: 2 entries
    // RetValue   0 added: Name <returnValue> Type V At 0 5 Range 0 4 Init 0 fixed
    static 
    {
        /* DEBUG = false; */
    }
}
