def METHOD_NAME(self, current_state_id):
    """
    Checks if the state to be loaded (referenced by `current_state_id` can be merged with another currently enqueued
    state and replaced by the merged state
    :param current_state_id: state about to be loaded
    :return: None
    """
    # When a state is loaded for exploration lets check if we can find it a
    # mate for merging
    with self.locked_context("cpu_stateid_dict", dict) as cpu_stateid_dict:
        # we get the lock and get a copy of the shared context
        merged_state = self.load_state(current_state_id)
        states_at_pc = cpu_stateid_dict.get(merged_state.cpu.PC, [])
        # lets remove ourself from the list of waiting states
        # assert current_state_id in states_at_pc #???
        if current_state_id in states_at_pc:
            states_at_pc.remove(current_state_id)
        # Iterate over all remaining states that are waiting for exploration
        # at the same PC
        merged_ids = []
        for new_state_id in states_at_pc:
            new_state = self.load_state(new_state_id)
            (exp_merged_state, exp_new_state, merged_constraint) = merge_constraints(
                merged_state.constraints, new_state.constraints
            )
            is_mergeable, reason = is_merge_possible(merged_state, new_state, merged_constraint)
            if is_mergeable:
                # Ok we'll merge it!
                merged_state = merge(
                    merged_state, new_state, exp_merged_state, merged_constraint
                )
                # lets remove the vestigial links to the old state
                self.delete_state(new_state_id)
                merged_ids.append(new_state_id)
                is_mergeable = "succeeded"
            else:
                is_mergeable = "failed because of " + reason
            debug_string = (
                "at PC = "
                + hex(merged_state.cpu.PC)
                + ", merge "
                + is_mergeable
                + " for state id = "
                + str(current_state_id)
                + " and "
                + str(new_state_id)
            )
            logger.debug(debug_string)
        for i in merged_ids:
            states_at_pc.remove(i)
        cpu_stateid_dict[merged_state.cpu.PC] = states_at_pc
        # Ok so we have merged current_state_id with {merged_ids}
        # And removed all merged_ids from everywhere
        # UGLY we are replacing a state_id. This may be breaking caches in
        # the future
        self.replace_state(current_state_id, merged_state)