@Override
    public boolean setAllocation(Occurrence toSolve, OccurrenceAllocation allocation) {
        // update occurrence with allocation and unassigne conflicting occurrences
        
        if (toSolve.getAllocation() != null) {
            // remove from multimap
            unassigneAllocation(toSolve);
        }
        
        List<Occurrence> newConflicting = assigneAllocation(toSolve, allocation);
        if (incompleteSearch) {
           
            if (newConflicting != null) {
                for (Occurrence occurrence : newConflicting) {
                    unassigneAllocation(occurrence);
                }
            }
        }
        
        return newConflicting != null && newConflicting.size() > 0;
    }