 		{
 			var promise:WeavePromise = new WeavePromise(WeaveAPI.globalHashMap);
 			promise.setResult(null);
-			var dispose:Function = function():void { promise.dispose(); };
+			var dispose:Function = function(_:*):void { promise.dispose(); };
 			return promise
 				.then(function(_:*):* {
 					// request data from every column

 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/.
 * 
 * ***** END LICENSE BLOCK ***** */

package weave.data
{
	import flash.utils.Dictionary;
	
	import avmplus.getQualifiedClassName;
	
	import weave.api.getLinkableDescendants;
	import weave.api.getSessionState;
	import weave.api.objectWasDisposed;
	import weave.api.registerLinkableChild;
	import weave.api.reportError;
	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.compiler.Compiler;
	import weave.data.AttributeColumns.DateColumn;
	import weave.data.AttributeColumns.GeometryColumn;
	import weave.data.AttributeColumns.NumberColumn;
	import weave.data.AttributeColumns.StringColumn;
	import weave.data.DataSources.CachedDataSource;
	import weave.primitives.Dictionary2D;
	import weave.primitives.GeneralizedGeometry;
	import weave.utils.WeakReference;
	import weave.utils.WeavePromise;
	
	/**
	 * @inheritDoc
	 */
	public class AttributeColumnCache implements IAttributeColumnCache
	{
		/**
		 * @inheritDoc
		 */
		public function getColumn(dataSource:IDataSource, metadata:Object):IAttributeColumn
		{
			// null means no column
			if (dataSource == null || metadata == null)
				return null;

			// Get the column pointer associated with the hash value.
			var hashCode:String = Compiler.stringify(metadata);
			var weakRef:WeakReference = d2d_dataSource_metadataHash_weakRef.get(dataSource, hashCode) as WeakReference;
			if (weakRef != null && weakRef.value != null)
			{
				if (WeaveAPI.SessionManager.objectWasDisposed(weakRef.value))
					d2d_dataSource_metadataHash_weakRef.remove(dataSource, hashCode);
				else
					return weakRef.value as IAttributeColumn;
			}
			
			// If no column is associated with this hash value, request the
			// column from its data source and save the column pointer.
			var column:IAttributeColumn = dataSource.getAttributeColumn(metadata);
			d2d_dataSource_metadataHash_weakRef.set(dataSource, hashCode, new WeakReference(column));

			return column;
		}
		
		private const d2d_dataSource_metadataHash_weakRef:Dictionary2D = new Dictionary2D(true, true);
		
		// TEMPORARY SOLUTION for WeaveArchive to access this cache data
		public var saveCache:Object = null;
		
		/**
		 * Creates a cache dump and modifies the session state so data sources are non-functional.

			}
		}
	}
}
