@Override
	public boolean equals(Object obj)
	{
		boolean areEqual = false;
		if (obj != null && CatCage.class.isAssignableFrom(obj.getClass()))
		{
			CatCage catCageOther = (CatCage) obj;
			areEqual = (catCageOther.getIdentifier().equals(getIdentifier())) && areCellContentsEqual(getBottomCell(), catCageOther.getBottomCell()) && areCellContentsEqual(getLeftCell(), catCageOther.getLeftCell()) && areCellContentsEqual(getTopCell(), catCageOther.getTopCell()) && areCellContentsEqual(getRightCell(), catCageOther.getRightCell());
		}
		assert !areEqual || (hashCode() == obj.hashCode()) : "If two instances are equal then their hashcodes must match! hashCode() = " + hashCode() + " obj.hashCode() = " + obj.hashCode();
		return areEqual;
	}