Why are you creating the scope externally and passing it in? Wouldn't it make sense for the `CompilationUnit` to have a private `Scope` object?