In the visitor pattern, i want the client to only have access to the getters of the elements, while the visitors should have access to getters and setters. How would you implement it?
I don’t want the visitors in the same package as the model (there are a lot of classes already).
I was thinking about introducing IWriteable interface which contains setters and accept methods.
Is there a better way?

Thanks
@Angel O’Sphere:
The package would contains models, visitors and factories all that ~2x (interfaces and impls).
I had some thought about rogue programmer too, that’s why I asked.
Another approach would be:
But this approach has many drawbacks and is cumbersome without generative techniques 😮