* a race condition occured (two threads removing the same
* a race condition occurred (two threads removing the same
  private void internalRemove(WeakBucket bucket)  {    int slot = bucket.slot;    if (slot == -1)      /* this bucket was already removed. */      return;    /* mark the bucket as removed.  This is necessary, since the     * bucket may be enqueued later by the garbage collection and     * internalRemove, will be called a second time.       */    bucket.slot = -1;    if (buckets[slot] == bucket)      buckets[slot] = bucket.next;    else      {	WeakBucket prev = buckets[slot];	/* This may throw a NullPointerException.  It shouldn't but if	 * a race condition occured (two threads removing the same	 * bucket at the same time) it may happen.  <br>	 * But with race condition many much worse things may happen	 * anyway.	 */	while (prev.next != bucket)	  prev = prev.next;	prev.next = bucket.next;      }    size--;  }