public <T extends Entry<T, ?>> T removeStructural(Entry<T, ?> entry) {
    """
	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
    """
		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;
	}
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
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 .