public Package FromEaPackage(EA.Package eaPackage, Path parentPath = null) { parentPath = parentPath ?? eaPackage.ToPath(_repository); var package = new Package { Id = eaPackage.PackageID, Name = eaPackage.Name, Elements = new List <Element>(), Packages = new List <Package>(), Diagrams = new List <Diagram>(), Path = parentPath, }; foreach (var e in eaPackage.Elements) { var eaElement = e as EA.Element; package.Elements.Add(CreateElement(eaElement)); } foreach (var p in eaPackage.Packages) { var eaChildPackage = p as EA.Package; var childPackage = FromEaPackage(eaChildPackage, package.Path); package.Packages.Add(childPackage); } foreach (var d in eaPackage.Diagrams) { var eaDiagram = d as EA.Diagram; var diagram = CreateDiagram(eaDiagram, package.Path); package.Diagrams.Add(diagram); } return(package); }