=str #16151 add tests and dont leak internal types in Sink/Source

Just the test and hiding of internal types for now.

To follow: 
* use type params?
* fix `runWith` missing method problem in this PR as well as its very connected

refs #16151
should these be `Set`s instead?