let MakeEnvironment [tree, fileName, env, cs] ← env2
where env2 ← AddCompiledImplementationFileToEnvironment [env1, fileName, contextTree, pg2]
where pg2 ← AddMainProcedureGraphToProgramGraph[procGraph, pg1]
where procGraph ← MakeProcedureGraph[programFragment]
where <contextTree, programFragment, pg1> ←
Compile[Block, EmptyContextTree[contextRib], pg, cs]
where pg ← CreateEmptyProgramGraph[]
where contextRib ← FreezeLocalContext[lc4, moduleTGN]
where <lc4, moduleTGN> ← CreateModuleTGN[lc3, ffl]
where ffl ← FreezeFieldList[fl2]
where <fl2, lc3> ← AddTypeDeclarationToFieldList[IdentList, fl1, lc2, cs, access, access, implTGN, BogusTypeExpPTree[], NullDefaultVal[]]
where access ← GetAccessVal[ProgHead, AccessValConst["private"]]
where <lc2, implTGN> ← BuildImplementationTGN[ProgHead, lc1, cedar, cs]
where cedar ← IsKeywordPresent[Cedar]
where <fl1, lc1, env1> ← ProcessDirectoryClause [Directory, fl, lc, env, cs]
where fl ← CreateEmptyFieldList[]
where lc ← CreateEmptyContext [GetRootContextRib[cs], True[]]