code: public static void setInternalState(Object object, Object value, Object... additionalValues) {
          setField(object, value,
                  findFieldInHierarchy(object, new AssignableFromFieldTypeMatcherStrategy(getType(value))));
          if (additionalValues != null && additionalValues.length > 0) {
              for (Object additionalValue : additionalValues) {
                  setField(
                          object,
                          additionalValue,
                          findFieldInHierarchy(object, new AssignableFromFieldTypeMatcherStrategy(
                                                                                                         getType(additionalValue))));
              }
          }
      }
docs: Set the value of a field using reflection. This method will traverse the
  super class hierarchy until the first field assignable to the
  <tt>value</tt> type is found. The <tt>value</tt> (or
  <tt>additionaValues</tt> if present) will then be assigned to this field.
  
  @param object           the object to modify
  @param value            the new value of the field
  @param additionalValues Additional values to set on the object