// super.append() will apply to diff cache in base class
super.append(path, changes);
BasicDBObject current = commit;
for (String name : PathUtils.elements(path)) {
String escName = Utils.escapePropertyName(name);
if (current.containsField(escName)) {
current = (BasicDBObject) current.get(escName);
} else {
BasicDBObject child = new BasicDBObject();
current.append(escName, child);
current = child;