code: static void copyState(Object object, Object context, FieldMatchingStrategy strategy) {
          if (object == null) {
              throw new IllegalArgumentException("object to set state cannot be null");
          } else if (context == null) {
              throw new IllegalArgumentException("context cannot be null");
          } else if (strategy == null) {
              throw new IllegalArgumentException("strategy cannot be null");
          }
  
          Set<Field> allFields = isClass(context) ? getAllStaticFields(getType(context)) : getAllInstanceFields(context);
          for (Field field : allFields) {
              try {
                  final boolean isStaticField = Modifier.isStatic(field.getModifiers());
                  setInternalState(isStaticField ? getType(object) : object, field.getType(), field.get(context));
              } catch (FieldNotFoundException e) {
                  if (strategy == FieldMatchingStrategy.STRICT) {
                      throw e;
                  }
              } catch (IllegalAccessException e) {
                  // Should never happen
                  throw new RuntimeException(
                                                    "Internal Error: Failed to get the field value in method setInternalStateFromContext.", e);
              }
          }
      }
docs: Copy state.
  
  @param object   the object
  @param context  the context
  @param strategy The field matching strategy.