anchor.diff:  							"fieldType" = "many-to-one"
   						} );
   
  -		this[ "add" & propertyName ] = variables[ "add" & propertyName ] = _setter;
  -		this[ "get" & propertyName ] = variables[ "get" & propertyName ] = _getter;
  +		this[ "add" & property ] = variables[ "add" & property ] = _setter;
  +		this[ "get" & property ] = variables[ "get" & property ] = _getter;
   
   		// Update Cache
  -		cachePut( '#newObj.getTable()#-#newObj.getID()#', newObj, getcachedWithin() );
  -		cachePut( '#getTable()#-#getID()#', this, getcachedWithin() );
  -
  +		lock type="exclusive" name="#getTable()#-#getID()#" timeout="1"{
  +			cachePut( '#newObj.getTable()#-#newObj.getID()#', newObj, getcachedWithin() );
  +			cachePut( '#getTable()#-#getID()#', this, getcachedWithin() );
  +		}
   		if( returnType is "struct" || returnType is "array" ){
   			return newObj.toStruct();
   		}else if( returnType is "json" ){
  
positive.code: 					}
  					var tmpLazy = left( originalMethodName , 4 ) is "lazy" || record.recordCount GTE 100 || this.getParentTable() != "";
  
  					var cachedObject = cacheGet( '#getTable()#-#qn[ getIDField() ][ 1 ]#' );
  
  					//writeLog('is object cached? #yesNoFormat(!isNull(cachedObject))#');
  					if( !isNull( cachedObject ) ){
  						// object cached, load from memory.
  
negative.code: 				// in this case we'll just iterate the cachedObject directly (NOTE: calling getMetaData() on the
  				// cachedObject will just return the metadata of BaseModelObject, and not the instantiated object's
  				// injected properties )
  
  				for( var prop in cachedObject ){
  					if(!isCustomFunction( cachedObject[prop] ) && prop != "METHODS" ){
  						this[ prop ] = cachedObject[ prop ];
  						variables[ prop ] = cachedObject[ prop ];
  						writeLog('Pumping #prop# into the object from cache...');
  						arrayAppend( variables.meta.properties, { name = prop, column = prop, type = isObject( cachedObject[ prop ] ) ? "object" : "string" } );
  					}
  				}
  
  				// Now that we've loaded the data, we need to identify if it is a new record or not.
  				variables._isNew = !len( trim( this.getID() ) );
  				// HACK ALERT - Somehow, sometimes, the object pulled from cache is empty, even though we check for
  				// an empty getID() before we even get here.... nutso, right?  All cache operations are locked, so
  				// not really sure why this happens.  So when it does happen, we'll just bypass the cache and load
  				// the object from scratch.  If this didn't happen, we'll return the cached object.
  				if( len( trim( this.getID() ) ) ){
  					return cachedObject;
  				}
  
  			}
  
  