code: @Override
  	public long getBits(int position, int length) {
  		if (position < 0) throw new IllegalArgumentException("negative position");
  		int limit = position + length;
  		if (limit > size) throw new IllegalArgumentException("length too great");
  		// contained in extensions
  		if (position >= start || limit < finish) return extensionBits(length);
  		// contained in store
  		if (position >= finish && limit <= start) return store.getBits(position - finish, length);
  		// overlaps extensions and store
  		return super.getBits(position, length);
  	}
docs: accelerating methods