Hi,
We had similar discussions before [1] and it keeps popping up all over again: The NodeStore interface and friends all operate on NodeState and as I said before, I don't think there is a reasonable way to implement this. Having NodeState all the places is too general. Have a look at my commits related to OAK-100. The way things are implemented there is by lying: NodeStore.getBuilder() and NodeStore.setRoot() only accept very specific instances of NodeStates as their arguments and throw exceptions on all other instances. I think this is wrong and we should use more exact types for NodeStore (and related) interfaces instead of throwing exceptions at runtime.
Michael [1] http://markmail.org/message/panl3wxfekvmcfyw
