code: public boolean remove(Object o) {
          if (o == null) {
              for (Node<E> x = first; x != null; x = x.next) {
                  if (x.item == null) {
                      unlink(x);
                      return true;
                  }
              }
          } else {
              for (Node<E> x = first; x != null; x = x.next) {
                  if (o.equals(x.item)) {
                      unlink(x);
                      return true;
                  }
              }
          }
          return false;
      }
docs: Removes the first occurrence of the specified element from this list,
  if it is present.  If this list does not contain the element, it is
  unchanged.  More formally, removes the element with the lowest index
  {@code i} such that
  <tt>(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o.equals(get(i)))</tt>
  (if such an element exists).  Returns {@code true} if this list
  contained the specified element (or equivalently, if this list
  changed as a result of the call).
  
  @param o element to be removed from this list, if present
  @return {@code true} if this list contained the specified element