public ClaimedResidence getByLoc(Location loc) { if (loc == null) return null; ClaimedResidence res = null; boolean found = false; Set<Entry<String, ClaimedResidence>> set = residences.entrySet(); synchronized (residences) { for (Entry<String, ClaimedResidence> key : set) { res = key.getValue(); if (res.containsLoc(loc)) { found = true; break; } } } if (!found) { return null; } ClaimedResidence subres = res.getSubzoneByLoc(loc); if (subres == null) { return res; } return subres; }