 			else if (_dynamicKeyFilter.internalObject != null)
 			{
 				// copy the keys that appear in both the base key set and the filter
-				_filteredKeys = new Array();
+				_filteredKeys = [];
 				if (_baseKeySet != null)
 				{
 					var baseKeys:Array = _baseKeySet.keys;
 					for (var i:int = 0; i < baseKeys.length; i++)
 					{
 						key = baseKeys[i] as IQualifiedKey;
-						var contains:int = _dynamicKeyFilter.containsKey(key) ? 1 : 0;
-						if (contains ^ inverse) // XOR
+						var contains:Boolean = _dynamicKeyFilter.containsKey(key);
+						if (contains != inverse)
 							_filteredKeys.push(key);
 					}
 				}

		
		private var _baseKeySet:IKeySet = null; // stores the base IKeySet
		// this stores the IKeyFilter
		private const _dynamicKeyFilter:DynamicKeyFilter = newLinkableChild(this, DynamicKeyFilter, invalidateFilteredKeys);
		private var _filteredKeys:Array; // stores the filtered list of keys
		private var _filteredKeysMap:Dictionary; // this maps a key to a value of true if the key is included in this key set
		

		{
			// TODO: key type conversion here?
			
			var inverse:Boolean = inverseFilter.value;
			var key:IQualifiedKey;
			if (_baseKeySet == null)
			{
