public ProblemSpaceTree InstantiateSolutionPackages(Option <ModelEntity.Package> parentPackage, ModelEntityRepository repo, Option <String> name) { var solutionPackageName = name.GetOrElse(Package.Name); var solutionPackage = repo.CreatePackage(solutionPackageName, parentPackage, SolutionSpace.SolutionSpacePackage.AsOption()); var children = Children.Select(c => c.InstantiateSolutionPackages(solutionPackage.AsOption(), repo, Options.None <String>())); return(new ProblemSpaceTree(Package, Options.Some(solutionPackage), ElementInstantiations, Diagrams, children)); }