 			var that:ColumnTreeNode = other as ColumnTreeNode;
 			if (!that)
 				return other.equals(this);
+			
+			// compare constructor
+			if (Object(this).constructor != Object(that).constructor)
+				return false; // constructors differ
 			
 			// compare source
 			if (this.source != that.source)

		 */
		private function cache(id:String, value:Object):*
		{
			_counter[id] = getCallbackCollection(source).triggerCounter;
			return _cache[id] = value;
		}
		
		/**

		 */
		private function isCached(id:String):Boolean
		{
			return source && _counter[id] == getCallbackCollection(source).triggerCounter;
		}
		
		/**
