elk-util-parent/elk-util-collections/src/main/java/org/semanticweb/elk/util/collections/entryset/EntryCollection.java
public <T extends Entry<T, ?>> T removeStructural(Entry<T, ?> entry) {
		int h = entry.structuralHashCode();
		int i = indexFor(h, buckets.length);
		E prev = buckets[i];
		E r = prev;
		T result = null;

		while (r != null) {
			E next = r.getNext();
			if (r.structuralHashCode() == h
					&& (result = entry.structuralEquals(r)) != null) {
				modCount++;
				if (prev == r)
					buckets[i] = next;
				else
					prev.setNext(next);
				if (size-- <= undersize && buckets.length >= 2 * minsize)
					resize(buckets.length / 2);
				return result;
			}
			prev = r;
			r = next;
		}
		// not found
		return null;
	}
public <T extends Entry<T, ?>> T removeStructural(Entry<T, ?> entry) {
		int h = entry.structuralHashCode();
		int i = indexFor(h, buckets.length);
		E prev = buckets[i];
		E r = prev;
		T result = null;

		while (r != null) {
			E next = r.getNext();
			if (r.structuralHashCode() == h
					&& (result = entry.structuralEquals(r)) != null) {
				modCount++;
				if (prev == r)
					buckets[i] = next;
				else
					prev.setNext(next);
				if (size-- <= undersize && buckets.length >= 2 * minsize)
					resize(buckets.length / 2);
				return result;
			}
			prev = r;
			r = next;
		}
		// not found
		return null;
	}
Removes and returns the entry in the set that is structurally equal to
the specified entry. Returns {@code null} if the set contains no such
entry. Equality of entries is decided using
{@link Entry#structuralHashCode()} and
{@link Entry#structuralEquals(Object)} methods.

@param entry
the entry that is used for finding the entry to be removed
@return the removed entry, or {@code null} if no entry that is equal to
the input object is found