 				d2d_dataSource_metadataHash.removeAllPrimary(cds);
 				var name:String = WeaveAPI.globalHashMap.getName(cds);
 				var classDef:Class = ClassUtils.getClassDefinition(cds.type.value);
+				var state:Object = cds.state.state;
 				var dataSource:IDataSource = WeaveAPI.globalHashMap.requestObject(name, classDef, false);
-				setSessionState(dataSource, cds.state.state);
+				setSessionState(dataSource, state);
 			}
 		}
 		

				var dataSourceName:String = WeaveAPI.globalHashMap.getName(dataSource);
				for (var metadataHash:String in cache[dataSource])
				{
					var column:IAttributeColumn = cache[dataSource][metadataHash];
					var metadata:Object = ColumnMetadata.getAllMetadata(column);
					var dataType:String = column.getMetadata(ColumnMetadata.DATA_TYPE);
					var keys:Array = [];


package weave.data
{
	import avmplus.getQualifiedClassName;
	
	import flash.utils.Dictionary;
	
	import weave.api.data.ColumnMetadata;
	import weave.api.data.DataType;
	import weave.api.data.IAttributeColumn;
	import weave.api.data.IAttributeColumnCache;
	import weave.api.data.IDataSource;
	import weave.api.data.IQualifiedKey;
	import weave.api.getLinkableDescendants;
	import weave.api.getSessionState;
	import weave.api.registerLinkableChild;
	import weave.api.setSessionState;
	import weave.compiler.Compiler;
	import weave.core.ClassUtils;
	import weave.data.AttributeColumns.DateColumn;
