code: @Deprecated
      @SuppressWarnings("unchecked")
      public static boolean selectItem(final FastAdapter adapter, final long identifier, final boolean select) {
          Triple<Boolean, IItem, Integer> res = adapter.recursive(new AdapterPredicate() {
              @Override
              public boolean apply(@NonNull IAdapter lastParentAdapter, int lastParentPosition, @NonNull IItem item, int position) {
                  if (item.getIdentifier() == identifier) {
                      if (position != -1) {
                          SelectExtension extension = (SelectExtension) adapter.getExtension(SelectExtension.class);
                          if (extension != null) {
                              if (select) {
                                  extension.select(position);
                              } else {
                                  extension.deselect(position);
                              }
                          }
                      } else {
                          item.withSetSelected(select);
                      }
                      return true;
                  }
                  return false;
              }
          }, true);
          return res.first;
      }
docs: select or unselect an item with the given identifier
  This will not handle the `only one selected` case. Please deselect all items first for this requirement.
  
  @param adapter    the adapter instance
  @param identifier the identifier of the item to select / deselect
  @param select     the new selected state of the sub items
  @deprecated See {@link SelectExtension#selectByIdentifier(long, boolean, boolean)} ()} ()}