 						var oldTypedState:Object = baseLookup[objectName];
 						if (oldTypedState is String || oldTypedState == null)
 						{
-							if (typedState is String || typedState == null)
-								baseLookup[objectName] = typedState; // avoid unnecessary function call overhead
-							else
-								baseLookup[objectName] = ObjectUtil.copy(typedState);
+							baseLookup[objectName] = copyObject(typedState);
 						}
 						else if (!(typedState is String || typedState == null)) // update dynamic state
 						{

					{
						if (!diff)
							diff = {};
						diff[newName] = newState[newName]; // TODO: same object pointer.. potential problem?
					}
				}


				var lv:ILinkableVariable = linkableObject as ILinkableVariable;
				if (removeMissingDynamicObjects == false && newState && getQualifiedClassName(newState) == 'Object')
				{
					lv.setSessionState(applyDiffForLinkableVariable(copyObject(lv.getSessionState()), newState));
				}
				else
				{
