@Override
    public boolean equals(Object obj) {
        if (obj instanceof Schedule) {
            Schedule objSchedule = ((Schedule)obj);
            if (objSchedule.allocationMapping.size() != this.allocationMapping.size()) {
                return false;
            }
            
            for (Entry<Occurrence, OccurrenceAllocation> objEntry : objSchedule.allocationMapping.entrySet()) {
                if (this.allocationMapping.containsKey(objEntry.getKey()) == false) {
                    return false;
                }
                
                if (this.getAllocationOf(objEntry.getKey()).equals(objEntry.getValue()) == false) {
                    return false;
                }
            }
            
            return true;
        }
        
        return super.equals(obj);
    }