docs: public static void deserializeToField(final Object containingObject, final String fieldName, final String json,
              final ClassFieldCache classFieldCache) throws IllegalArgumentException {
          if (containingObject == null) {
              throw new IllegalArgumentException("Cannot deserialize to a field of a null object");
          }
  
          // Parse the JSON
          Object parsedJSON;
          try {
              parsedJSON = JSONParser.parseJSON(json);
          } catch (final ParseException e) {
              throw new IllegalArgumentException("Could not parse JSON", e);
          }
  
          // Create a JSONObject with one field of the requested name, and deserialize that into the requested object
          final JSONObject wrapperJsonObj = new JSONObject(1);
          wrapperJsonObj.items.add(new SimpleEntry<>(fieldName, parsedJSON));
  
          // Populate the object field
          // (no need to call getInitialIdToObjectMap(), since toplevel object is a wrapper, which doesn't have an id)
          final List<Runnable> collectionElementAdders = new ArrayList<>();
          populateObjectFromJsonObject(containingObject, containingObject.getClass(), wrapperJsonObj, classFieldCache,
                  new HashMap<CharSequence, Object>(), collectionElementAdders);
          for (final Runnable runnable : collectionElementAdders) {
              runnable.run();
          }
      }