public object alterRoot(IFn fn, ISeq args) { object newRoot = fn.applyTo(RT.cons(_root, args)); Validate(getValidator(), newRoot); object oldroot = _root; _root = newRoot; ++_rev; NotifyWatches(oldroot,newRoot); return newRoot; }