 		{
 			var map2:Object = map.get(key1);
 			if (map2 == null)
-				map.set(key1, map2 = weak2 ? new Weave.WeakMap() : new Weave.Map());
-			map.set(key2, value);
+				map.set(key1, map2 = weak2 ? new Utils.WeakMap() : new Utils.Map());
+			map2.set(key2, value);
 		}
 		
 		/**

	{
		public function Dictionary2D(weakPrimaryKeys:Boolean = false, weakSecondaryKeys:Boolean = false, defaultType:Class = null)
		{
			map = weakPrimaryKeys ? new Weave.WeakMap() : new Weave.Map;
			weak1 = weakPrimaryKeys;
			weak2 = weakSecondaryKeys;
			this.defaultType = defaultType;

		 * The primary Map object.
		 */		
		public var map:Object;
		private var weak1:Boolean;
		private var weak2:Boolean; // used as a constructor parameter for nested Dictionaries
		private var defaultType:Class; // used for creating objects automatically via get()
		
		/**
		 * @param key1 The first map key.
		 * @param key2 The second map key.
		 * @return The value.
