@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (getClass() != obj.getClass()) { return false; } StageGroup g = (StageGroup) obj; if(g.getSize() == stages.size()) { for(Stage s : g.getStages()) { if(!hasStage(s.getName()) || !getStage(s.getName()).equals(s)) { return false; } } if((getPropertiesModifiedDate()==null) != (g.getPropertiesModifiedDate()==null)) { return false; } else if (getPropertiesModifiedDate()==null && g.getPropertiesModifiedDate() == null) { return true; } return getPropertiesModifiedDate().equals(g.getPropertiesModifiedDate()); } return false; }