@Override
    public boolean equals( Object other ) {
        if ( other == this ) {
            return true;
        }
        if ( !( other instanceof TLongList ) ) return false;

        if ( other instanceof TLongArrayList ) {
            TLongArrayList that = ( TLongArrayList )other;
            if ( that.size() != this.size() ) return false;

            for ( int i = _pos; i-- > 0; ) {
                if ( this._data[ i ] != that._data[ i ] ) {
                    return false;
                }
            }
            return true;
        }
        else {
            TLongList that = ( TLongList )other;
            if ( that.size() != this.size() ) return false;

            for( int i = 0; i < _pos; i++ ) {
                if ( this._data[ i ] != that.get( i ) ) {
                    return false;
                }
            }
            return true;
        }
    }