+ public void remove(T loc) {
+
+ Set<T> keySet = getKeySet();
+
+ Set<T> inSet = new HashSet<T>();
+ for (Iterator iterator = keySet.iterator(); iterator.hasNext();) {
+ T keyElement = (T) iterator.next();
+ Set<T> connectedSet = get(keyElement);
+ if (connectedSet.contains(loc)) {
+ inSet.add(loc);
+ connectedSet.remove(loc);
+ }
+ }
+
+ Set<T> outSet = get(loc);
+
+ for (Iterator iterator = inSet.iterator(); iterator.hasNext();) {
+ T in = (T) iterator.next();
+ for (Iterator iterator2 = outSet.iterator(); iterator2.hasNext();) {
+ T out = (T) iterator2.next();
+ put(in, out);
+ }
+ }
+
+ getTable().remove(loc);
+
+ }
+