@Override
  public boolean remove(Object o) {
    if (frozen) {
      throw new IllegalStateException();
    }

    if (weirdFiles.remove(o)) {
      return true;
    }
    if (!(o instanceof VirtualFileWithId)) {
      return false;
    }
    int fileId = ((VirtualFileWithId)o).getId();
    if (fileIds != null && fileIds.get(fileId)) {
      fileIds.clear(fileId);
      return true;
    }
    if (idSet != null && idSet.remove(fileId)) {
      return true;
    }
    return false;
  }
@Override
  public boolean remove(Object o)