public long[] get(long index, final long dest[], final int offset, final int length) {
		long from = borders.getLong(index++), to;
		// We use the destination array to cache borders.
		borders.get(index, dest, offset, length);

		for(int i = 0; i < length; i++) {
			to = dest[offset + i];
			dest[offset + i] = ((1L << (to - from)) | bits.getLong(from, to)) - this.offset;
			from = to;
		}

		return dest;
	}
public long [ ] get ( long index , final long dest [ ] , final int offset , final int length ) { long from = borders . getLong ( index ++ ) , to ; borders . get ( index , dest , offset , length ) ; for ( int i = 0 ; i < length ; i ++ ) { to = dest [ offset + i ] ; dest [ offset + i ] = ( ( 1L << ( to - from ) ) | bits . getLong ( from , to ) ) - this . offset ; from = to ; } return dest ; }
Extracts a number of consecutive entries into a given array fragment.

@param index the index of the first entry returned.
@param dest the destination array; it will be filled with {@code length} consecutive entries starting at position {@code offset}.
@param offset the first position written in {@code dest}.
@param length the number of elements written in {@code dest} starting at {@code offset}.
@return {@code dest}
@see #get(long, long[])