code: @Override
    public T select(Object item) {
      if (item == null) {
        return null;
      }
  
      if (itemClass.isInstance(item)) {
        return itemClass.cast(item);
      }
      logger.debug("item [{}] is not assignable to class [{}], returning null", item, itemClass);
      return null;
    }
docs: If the item is null, return null. If the item is instance of the
  constructor parameter itemClass, return the type cast result, otherwise,
  return null.