docs: <Delegated> List<MvpPresenter<? super Delegated>> getMvpPresenters(Delegated delegated, String delegateTag) {
  		if (!hasMoxyReflector()) {
  			return Collections.emptyList();
  		}
  
  		@SuppressWarnings("unchecked")
  		Class<? super Delegated> aClass = (Class<Delegated>) delegated.getClass();
  		List<Object> presenterBinders = null;
  
  		while (aClass != Object.class && presenterBinders == null) {
  			presenterBinders = MoxyReflector.getPresenterBinders(aClass);
  
  			aClass = aClass.getSuperclass();
  		}
  
  		if (presenterBinders == null || presenterBinders.isEmpty()) {
  			return Collections.emptyList();
  		}
  
  		List<MvpPresenter<? super Delegated>> presenters = new ArrayList<>();
  		PresentersCounter presentersCounter = MvpFacade.getInstance().getPresentersCounter();
  		for (Object presenterBinderObject : presenterBinders) {
  			//noinspection unchecked
  			PresenterBinder<Delegated> presenterBinder = (PresenterBinder<Delegated>) presenterBinderObject;
  			List<PresenterField<Delegated>> presenterFields = presenterBinder.getPresenterFields();
  
  			for (PresenterField<Delegated> presenterField : presenterFields) {
  				MvpPresenter<? super Delegated> presenter = getMvpPresenter(delegated, presenterField, delegateTag);
  
  				if (presenter != null) {
  					presentersCounter.injectPresenter(presenter, delegateTag);
  					presenters.add(presenter);
  					presenterField.bind(delegated, presenter);
  				}
  			}
  		}
  
  		return presenters;
  	}