docs: public synchronized void remove( Entry entry )
      {
          List<Entry> entries;
          if ( entry == null )
          {
              return;
          }
          DirectoryEntry parent = entry.getParent();
          if ( parent == null )
          {
              return;
          }
          else
          {
              entries = contents.get( parent );
              if ( entries == null )
              {
                  return;
              }
          }
          for ( Iterator<Entry> i = entries.iterator(); i.hasNext(); )
          {
              Entry e = (Entry) i.next();
              if ( entry.equals( e ) )
              {
                  if ( e instanceof DirectoryEntry )
                  {
                      Entry[] children = listEntries( (DirectoryEntry) e );
                      for ( int j = children.length - 1; j >= 0; j-- )
                      {
                          remove( children[j] );
                      }
                      contents.remove( e );
                  }
                  i.remove();
                  return;
              }
          }
      }