NamedElement uses Namespaces (Namespace is actually derived from the class introduced in abstractions::constraints) and Visibilities. In addition there are new classes to facilitate an import from other packages.
PackagableElement is just a new class for the type. Nothing is added to the namedElement.
The new class ElementImport is a directionalRelationship from the namespace (subsets source) to a packagableElement (subsets target). The new class PackageImport is equivalent with a complete package as target. It imports all Elements of a package that are not already imported via Element import.
Only elements with public or empty visibility may be imported. The visibility in the ElementImport or PackageImport may be public (keyword <<import>>) or private (keyword <<access>>).
If an alias is used in the elementImport, this replaces the name of the element in the importing namespace. The namespace can access all imported elements via importedMember in the same way as ownedMembers, that is without a qualified name (example: if imported, the element can be called as 'String' instead of 'Types:tring').
Summary: The importing just allows to acces the elements by the name instead of the qualifiedName, as if they were in the same package. A visibility of public allows to refer to them by the importing namespace instead of the owning namespace.
LabVIEW: I havn't explored the options of .lvlib deep enough to comment on this.If you have insights on this, please use the comment function to share them.