Parametrized the apply method with the owner
Simplified the remove node method
Added constructor to make the node with a given owner

Other than "base" which is the default
Adding a node now sets it's correct owner
Testing to make sure non conflicting stuff works

And it does
ASTNode.apply now throws an exception in case of conflict

A tests fails as a result
Fixed the test

The node existed in the dumb singleton, and so an artificial conflict was
created
Added test to check for conflicting updates
Added more info to the exception
Generating conflict for deleting a modified node
Dealing with delete conflicts in the update
Deletion now keeps the node in the manager but marks it as delete

This allows me to deal with deletes in a consistent way.
Throwing a conflict when someone tries to modify a deleted node

This should only happen during merging. Hopefully. We'll see...
Sanity test for the Updates

Again, making sure you can't change a deleted node
The operation now collects the conflicts
Removed redundant annotation
The history knows about conflicts and applying to an existing program
Merge branch 'refs/heads/conflict'