docs: public T remove()
      {
          if ( size == 0 ) {
              return null;
          }
          
          //remove the first element
          Entry<T> o = head.next;
          head.next   = o.next;
          o.next.prev = head;
          
          //bakup the data
          T v         = o.data;
          size--;
          index.remove(v.getValue());
          
          o = null;            //Let gc do its work
          
          return v;
      }