docs: static List<Object> retainMatchingToString(Iterable<?> items, Iterable<?> itemsToCheck) {
      SetMultimap<String, Object> stringValueToItemsToCheck = HashMultimap.create();
      for (Object itemToCheck : itemsToCheck) {
        stringValueToItemsToCheck.put(String.valueOf(itemToCheck), itemToCheck);
      }
  
      List<Object> result = Lists.newArrayList();
      for (Object item : items) {
        for (Object itemToCheck : stringValueToItemsToCheck.get(String.valueOf(item))) {
          if (!Objects.equal(itemToCheck, item)) {
            result.add(item);
            break;
          }
        }
      }
      return result;
    }