# 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))))
