boolean (final Place place) { if (myPath.size() >= place.myPath.size()) return false; final Iterator<String> thisIterator = myPath.keySet().iterator(); final Iterator<String> otherIterator = place.myPath.keySet().iterator(); while (thisIterator.hasNext()) { String thisKey = thisIterator.next(); String otherKey = otherIterator.next(); if (thisKey == null || !thisKey.equals(otherKey)) return false; final Object thisValue = myPath.get(thisKey); final Object otherValue = place.myPath.get(otherKey); if (thisValue == null || !thisValue.equals(otherValue)) return false; } return true; }