I would consider reducing the visibility of all these details and methods. I think most of them only need package visibility. Some of them might be needed only in tests, which most likely means that the tests are in the wrong package :)