anchor.diff:  				// 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() ) );
  -
  -				return cachedObject;
  +				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;
  +				}
   
   			}
   
  
positive.code: 							"fieldType" = "many-to-one"
  						} );
  
  		this[ "add" & propertyName ] = variables[ "add" & propertyName ] = _setter;
  		this[ "get" & propertyName ] = variables[ "get" & propertyName ] = _getter;
  
  		// Update Cache
  		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" ){
  
negative.code: 
  		if( isSimpleValue( ID ) && !this.isNew() ){
  			// Now cache this thing.  The next time we need to call it (within the cachedwithin timespan) we can just pull it from memory.
  			lock type="exclusive" name="#getTable()#-#getID()#" timeout="1"{
  				cachePut( '#getTable()#-#getID()#', this, getcachedWithin() );
  			}
  		}
  		return this;
  
  