public boolean equals(Object o)
    {
        if(this == o) return true;
        if(o instanceof int[])
        {
            boolean retVal = true;
            int[] other = (int[])o;

            for(int i=0,max=used;i<max;i++)
            {
                if((other.length<=i)||(other[i]!=data[i]))
                {
                    retVal=false;
                    break;
                }
            }

            return retVal;
        }

        if(!(o instanceof IntArray)) return false;

        final IntArray intArray = (IntArray) o;

        if(used != intArray.used) return false;
        
        for(int i=0;i<used;i++)
        {
            if(data[i]!=(intArray.data[i])) return false;
        }

        return true;
    }