# Extern crate self alias extern crate self as current; ==> SourceFile(ExternCrateDeclaration(extern, crate, self, as, BoundIdentifier)) # Public extern crate self alias pub extern crate self as current; ==> SourceFile(ExternCrateDeclaration(Vis(pub), extern, crate, self, as, BoundIdentifier)) # Extern crate self alias inside a module mod nested { extern crate self as current; } ==> SourceFile( ModItem( mod, BoundIdentifier, DeclarationList(ExternCrateDeclaration(extern, crate, self, as, BoundIdentifier))))