 		private static const _timezoneMultiplier:Number = 60000;
 		
 		/**
-		 * This is much faster than using ObjectUtil.compare().	It is meant to be used on dynamic, untyped objects.
+		 * This compares two dynamic objects or primitive values and is much faster than ObjectUtil.compare().
 		 * @param a First dynamic object or primitive value.
 		 * @param b Second dynamic object or primitive value.
 		 * @return A value of zero if the two objects are equal, nonzero if not equal.

			for (i = 0; i < 100; i++)
				if (compareDynamicObjects(o1,o2) != 0)
					throw "StandardLib.compareDynamicObjects fail";
			DebugTimer.lap('StandardLib.compareDynamicObjects');
			for (i = 0; i < 100; i++)
				if (compareBytes(o1,o2) != 0)
					throw "StandardLib.compareBytes fail";
			DebugTimer.end('StandardLib.compareBytes');
		}
	}
}

				return ObjectUtil.stringCompare(qna, qnb);
			
			var p:String;
			
			// test if objects are dynamic
			try
			{
				a[''];
				b[''];
			}
			catch (e:Error)
			{
				return 1; // not dynamic objects
			}
			
			// if there are properties in a not found in b, return -1
			for (p in a)
			{
				if (!b.hasOwnProperty(p))
					return -1;
			}
			for (p in b)
			{
				// if there are properties in b not found in a, return 1
				if (!a.hasOwnProperty(p))
					return 1;
				
				var c:int = compareDynamicObjects(a[p], b[p]);
				if (c != 0)
					return c;
			}
			
			return 0;
		}
		
