def __find_block_neighbors(self, block, level_blocks, unhandled_block_indexes):
neighbors = []<EOL>handled_block_indexes = []<EOL>for unhandled_index in unhandled_block_indexes:<EOL><INDENT>if block.is_neighbor(level_blocks[unhandled_index]):<EOL><INDENT>handled_block_indexes.append(unhandled_index)<EOL>neighbors.append(level_blocks[unhandled_index])<EOL>if len(neighbors) == <NUM_LIT:8>:<EOL><INDENT>break<EOL><DEDENT><DEDENT><DEDENT>for handled_index in handled_block_indexes:<EOL><INDENT>unhandled_block_indexes.remove(handled_index)<EOL><DEDENT>return neighbors<EOL>
!
        @brief Search block neighbors that are parts of new clusters (density is greater than threshold and that are
                not cluster members yet), other neighbors are ignored.

        @param[in] block (bang_block): BANG-block for which neighbors should be found (which can be part of cluster).
        @param[in] level_blocks (list): BANG-blocks on specific level.
        @param[in] unhandled_block_indexes (set): Blocks that have not been processed yet.

        @return (list) Block neighbors that can become part of cluster.