I see two options for resolving this issue:
1) Continue to support Bindable, but move it out of pivot.wtkx,
possibly to pivot.util or pivot.wtk. As a result of this move, we
would lose support for @Load, since it depends on WTKXSerializer.
However, we could retain support for @Bind.
2) Eliminate Bindable altogether. This seems drastic, especially
since the annotations do tend to clean up the code a bit. However,
there is a lot of code behind that support that needs to be
maintained, and I'm not sure it is justified.
A third alternative is to continue to support binding, but only for
trusted code. That would eliminate the the need for the bind processor
as well as the need to extend a Bindable base class. Obviously, the
downside is that it is not a universal solution since it couldn't be
used in unsigned applets.
If we decide to take this approach, I would suggest moving the bind()
method back into WTKXSerializer:
public void bind(Object object) throws BindException { ... }
This would allow us to use it on any class, not just instances of
Bindable.
Note that this method is not static - it would operate on instances of
WTKXSerializer that had already been called to readObject(). So we
still wouldn't need @Load, but we could support @Bind.