@staticmethod
def _get_displaced_neighbors(lookup_idx, nbhd, nbhd_size, max_size):
    """
		Find the indices in _lookup_table that supposedly relate to a key that
		originally mapped to the given index, but were displaced during some
		previous _free_up call

		:param lookup_idx: The index in _lookup_table to find displaced neighbors for
		:param nbhd: The neighborhood at lookup_idx
		:param nbhd_size: The size of the given neighborhood
		:param max_size: The current maximum size of the dict

		:return: (list) Indices in _lookup_table that supposedly have data that would
						be stored at lookup_idx were it empty at the time of insertion
		"""
    if lookup_idx < 0:
        raise ValueError(u'Indexes cannot be negative')
    elif lookup_idx >= max_size:
        raise ValueError(u'Index {0} outside array'.format(lookup_idx))
    result = []
    for i in range(nbhd_size):
        if nbhd & 1 << i > 0:
            result.append((lookup_idx + i) % max_size)
    return result
