docs: void injectContextApplication(Application app) {
          ApplicationInfo appinfo = new ApplicationInfo(app, this.getBus());
          if (appinfo.contextsAvailable()) {
              InjectionRuntimeContext irc = InjectionRuntimeContextHelper.getRuntimeContext();
              for (Map.Entry<Class<?>, Method> entry : appinfo.getContextMethods().entrySet()) {
                  Method method = entry.getValue();
                  Object value = method.getParameterTypes()[0] == Application.class ? null : appinfo.getContextSetterProxy(method);
  
                  irc.setRuntimeCtxObject(entry.getKey().getName(),
                                          value);
                  InjectionUtils.injectThroughMethod(app, method, value);
              }
  
              //FIXME: what if we have a method and field with same name?
              for (Field f : appinfo.getContextFields()) {
                  Object value = f.getType() == Application.class ? null : appinfo.getContextFieldProxy(f);
                  irc.setRuntimeCtxObject(f.getType().getName(), value);
                  InjectionUtils.injectFieldValue(f, app, value);
              }
          }
      }