Next on our list is the shadow function. This function affects symbols in packages, so if those concepts are unclear to you you might want to read this earlier article. This function interns a new symbol with the supplied name in the given package if that symbol doesn’t already exist in that package directly (i.e. not through inheritance). If the symbol exists through inheritance alone, the symbol interned by shadow has the effect of shadowing the inherited symbol in the package.