move duplicated binding generator visitor to it's own class

Resolves #1082.
why is it called `PrivateKModule`?