docs: def imported_classifiers(p: ecore.EPackage):
          """Determines which classifiers have to be imported into given module."""
          classes = {c for c in p.eClassifiers if isinstance(c, ecore.EClass)}
  
          supertypes = itertools.chain(*(c.eAllSuperTypes() for c in classes))
          imported = {c for c in supertypes if c.ePackage is not p}
  
          attributes = itertools.chain(*(c.eAttributes for c in classes))
          attributes_types = (a.eType for a in attributes)
          imported |= {t for t in attributes_types if t.ePackage not in {p, ecore.eClass, None}}
  
          imported_dict = {}
          for classifier in imported:
              imported_dict.setdefault(classifier.ePackage, set()).add(classifier)
  
          return imported_dict