docs: function Tome(parent, key) {
  
  	// The Tome type holds references and methods that all 'real' types
  	// inherit. We should never get an object that is just a Tome, it should
  	// always be at least one other type. We call this function in the
  	// constructor of each Tome type.
  
  	// __root__ holds a reference to the Tome at the top of the chain. We use
  	// it to identify where our change operations are being held. It exists on
  	// all Tomes.
  
  	// __diff__ is our buffer that holds all of the change operations that have
  	// been generated. It only exists on the root Tome.
  
  	// __version__ is a number that increments whenever a Tome or any of its
  	// child Tomes changes. It only exists on the root Tome.
  
  	// __dirty__ is a number that increments whenever a Tome changes. It exists
  	// on all Tomes.
  
  	// __parent__ holds a reference to the Tome's parent object so we can
  	// signal up the Tome chain. It only exists on Tomes with parents.
  
  	// __key__ is the key that our Tome is referred to by its parent. It only
  	// exists on Tomes with parents.
  
  	// If you're using the node.js event emitter, we need to make the _events
  	// non-enumerable. Ideally, node.js would make this the default behavior.
  
  	var hasParentTome = Tome.isTome(parent);
  
  	var properties = {
  		__dirty__: { writable: true, value: hasParentTome ? parent.__root__.__version__ : 1 },
  		__root__: { writable: true, value: hasParentTome ? parent.__root__ : this },
  		domain: { configurable: true, writable: true },
  		_events: { configurable: true, writable: true },
  		_eventsCount: { configurable: true, writable: true },
  		_maxListeners: { configurable: true, writable: true },
  		_callbacks: { configurable: true, writable: true }
  	};
  
  	if (hasParentTome) {
  		properties.__parent__ = { writable: true, value: parent };
  		properties.__key__ = { writable: true, value: key };
  	} else {
  		properties.__diff__ = { writable: true, value: [] };
  		properties.__diffEnabled__ = { writable: true, value: true };
  		properties.__version__ = { writable: true, value: 1 };
  	}
  
  	Object.defineProperties(this, properties);
  
  	EventEmitter.call(this);
  }