public ISemantReturn<ABT.TranslnUnit> GetTranslnUnit() {
var env = new Env();
var externDeclns = this.Declns.Aggregate(ImmutableList<Tuple<Env, ExternDecln>>.Empty, (acc, externDecln) => acc.AddRange(Semant(externDecln.GetExternDecln, ref env))
);
return SemantReturn.Create(env, new ABT.TranslnUnit(externDeclns.ToList()));
}