 		 */
 		override public function containsKey(key:IQualifiedKey):Boolean
 		{
-			return !StandardLib.isUndefined(getValueFromKey(key));
+			return keys && _allKeysLookup[key];
 		}
 
 		private function variableGetter(name:String):*

			if (_allKeysTriggerCount != variables.triggerCounter)
			{
				_allKeys = null;
				_allKeysTriggerCount = variables.triggerCounter; // prevent infinite recursion

				var variableColumns:Array = variables.getObjects(IKeySet);

		 * This is all the keys in all the variables columns
		 */
		private var _allKeys:Array = null;
		private var _allKeysLookup:Dictionary;
		private var _allKeysTriggerCount:uint = 0;
		/**
		 * This is a cache of metadata values derived from the metadata session state.
