docs: private static SortedMap<TypeElement, List<TypeElement>> getPresenterBinders(List<TypeElement> presentersContainers) {
  		Map<TypeElement, TypeElement> extendingMap = new HashMap<>();
  
  		for (TypeElement presentersContainer : presentersContainers) {
  			TypeMirror superclass = presentersContainer.getSuperclass();
  
  			TypeElement parent = null;
  
  			while (superclass.getKind() == TypeKind.DECLARED) {
  				TypeElement superclassElement = (TypeElement) ((DeclaredType) superclass).asElement();
  
  				if (presentersContainers.contains(superclassElement)) {
  					parent = superclassElement;
  					break;
  				}
  
  				superclass = superclassElement.getSuperclass();
  			}
  
  			extendingMap.put(presentersContainer, parent);
  		}
  
  		// TreeMap for sorting
  		SortedMap<TypeElement, List<TypeElement>> elementListMap = new TreeMap<>(TYPE_ELEMENT_COMPARATOR);
  
  		for (TypeElement presentersContainer : presentersContainers) {
  			ArrayList<TypeElement> typeElements = new ArrayList<>();
  			typeElements.add(presentersContainer);
  
  			TypeElement key = presentersContainer;
  			while ((key = extendingMap.get(key)) != null) {
  				typeElements.add(key);
  			}
  
  			elementListMap.put(presentersContainer, typeElements);
  		}
  		return elementListMap;
  	}