class Members {
  private Members() {}

  public static Method methodFor(Class<?> type, String methodName, Class<?>... parameterTypes) {<FILL_FUNCTION_BODY>}

  public static Field fieldFor(Class<?> type, String fieldName) {
    while (type != null) {
      for (Field field : type.getDeclaredFields())
        if (field.getName().equals(fieldName))
          return field;
      type = type.getSuperclass();
    }
    return null;
  }
}

    if (type == null)
      return null;

    for (Method method : type.getDeclaredMethods())
      if (!method.isBridge()
          && !method.isSynthetic()
          && method.getName().equals(methodName)
          && ((parameterTypes == null && method.getParameterTypes().length == 0) || Arrays.equals(
              method.getParameterTypes(), parameterTypes)))
        return method;

    for (Class<?> interfaze : type.getInterfaces()) {
      Method result = methodFor(interfaze, methodName, parameterTypes);
      if (result != null)
        return result;
    }
    return methodFor(type.getSuperclass(), methodName, parameterTypes);
  
<no_super_class>