For example, the symbol might be an external symbol of more than one used package, or the symbol might be directly present in a package and also inherited from another package. In such cases there is no name conflict. The same identical symbol cannot conflict with itself. Name conflicts occur only between distinct symbols with the same name. The creator of a package can tell the system in advance how to resolve a name conflict through the use of shadowing .
Every package has a list of shadowing symbols.
A shadowing symbol takes precedence over any other symbol of the same name that would otherwise be accessible to the package. The functions shadow and shadowing-import may be used to declare shadowing symbols. Name conflicts are detected when they become possible, that is, when the package structure is altered. There is no need to check for name conflicts during every name lookup. The functions use-package , import , and export check for name conflicts.