also we need to use an attribute `InternalsVisibleTo` to make these classes visibile to Dpdt.Generator(.Core) and extension. it is unclear now hot it will affect unit tests.