docs: private String[] getHierarchyInterfaces(XsdElement element, String apiName) {
          List<String> interfaceNames = new ArrayList<>();
          XsdElement base = getBaseFromElement(element);
          List<XsdAttribute> elementAttributes = getOwnAttributes(element).collect(Collectors.toList());
          List<ElementHierarchyItem> hierarchyInterfacesList = new ArrayList<>();
  
          while (base != null) {
              List<String> attributeNames = elementAttributes.stream().map(XsdAttribute::getName).collect(Collectors.toList());
              List<XsdAttribute> moreAttributes = getOwnAttributes(base).filter(attribute -> !attributeNames.contains(attribute.getName())).collect(Collectors.toList());
              elementAttributes.addAll(moreAttributes);
  
              hierarchyInterfacesList.add(new ElementHierarchyItem(base.getName() + HIERARCHY_INTERFACES_SUFFIX, moreAttributes, getInterfaces(base, apiName)));
  
              base = getBaseFromElement(base);
          }
  
          if (!hierarchyInterfacesList.isEmpty()){
              interfaceNames.add(hierarchyInterfacesList.get(0).getInterfaceName());
  
              hierarchyInterfacesList.forEach(item -> this.hierarchyInterfaces.put(item.getInterfaceName(), item));
          }
  
          return listToArray(interfaceNames);
      }