This revision adds many assert statements to the core methods in AbstractDJDocument, its descendants, and clients. It also streamlines the logic of some methods in AbstractDJDocument and reduces the recursive locking in the core methods of AbstractDJDocument. This process is far from complete. I am trying to introduce the convention that methods with locking preconditions (e.g. assume the this holds a read lock) begin with the '_' character. In many cases, there is an analogous method that includes the presumed locking operations and it has the same name except for omitting the leading '_' character.