code: public void remove() {
           ThreadLocalMap m = getMap(Thread.currentThread());
           if (m != null)
               m.remove(this);
       }
docs: Removes the current thread's value for this thread-local
  variable.  If this thread-local variable is subsequently
  {@linkplain #get read} by the current thread, its value will be
  reinitialized by invoking its {@link #initialValue} method,
  unless its value is {@linkplain #set set} by the current thread
  in the interim.  This may result in multiple invocations of the
  {@code initialValue} method in the current thread.
  
  @since 1.5