I see duplicate implementations in move() and modify() methods in ContextPartitions and Interceptors.  It is because they provide almost identical operation with two methods with different signature.

I implemented AbstractContextPartition so that users can implement minimal number of operations to make their ContextPartition implementation.  But, what about just merging these each method pair into just two methods as I did in AbstractContextPartition?

what we call human nature is actually human habit