whole_func_string: function SyncApi(schema, sh, logger){
  	_.assertObject(schema);
  	_.assertFunction(logger)
  	
  	this.log = logger;
  	
  	this.temporaryIdCounter = -1;
  
  	this.sh = sh;
  	//_.assertFunction(sh.makeFork)
  	this.schema = schema;
  
  	this.snap = {latestVersionId: -1, objects: {}, historicalViewObjects: {}};
  
  	this.cachedProperties = {};
  	
  	this.changeListener = SyncApi.prototype.changeListener.bind(this);
  	_.assertFunction(this.changeListener);
  
  	this.objectApiCache = {};
  	this.historicalObjectCache = {}
  	
  	this.uid = Math.random()
  	
  	this.latestVersionId = -1
  	//this.log('made SyncApi ' + this.uid)
  }
func_code_string: function SyncApi(schema, sh, logger){
  	_.assertObject(schema);
  	_.assertFunction(logger)
  	
  	this.log = logger;
  	
  	this.temporaryIdCounter = -1;
  
  	this.sh = sh;
  	//_.assertFunction(sh.makeFork)
  	this.schema = schema;
  
  	this.snap = {latestVersionId: -1, objects: {}, historicalViewObjects: {}};
  
  	this.cachedProperties = {};
  	
  	this.changeListener = SyncApi.prototype.changeListener.bind(this);
  	_.assertFunction(this.changeListener);
  
  	this.objectApiCache = {};
  	this.historicalObjectCache = {}
  	
  	this.uid = Math.random()
  	
  	this.latestVersionId = -1
  	//this.log('made SyncApi ' + this.uid)
  }
func_documentation_string: /*
  function getPath(){
  return this.parent.getPath().concat(this.part);
  }