Try to use as many Forge hooks as you can.
Then try to use Java Reflection to do what is left.
For the stragglers, try to make a new hook and try to make it as generic as possible, and submit a pull request for it to be put in to Forge proper.
Thanks for the feedback
Hm, I'd like to have Gulliver be Forge compatible but not required. I suspect that, since some of the Forged base classes I conflict with happen to implement Forge-specific interface classes, I'd be best off making 2 releases: one fully Forge compatible, one not (but close if possible).
So... the Forge one would need to incorporate Forge code into the base classes I modify, and the less-Forged would use reflection on existing hooks wherever it can. Does that sound about right?
I'd actually try to replace code with Forge hooks if possible, but it'd be trickier to maintain 2 very divergent forks. Probably worth it if the hooks are useful
I'll see what I can figure out.