 						$updateCollectionObject(property=arguments.property, value=arguments.value[loc.i], position=loc.i);
 					}
 				}
-				else if (IsStruct(arguments.value[loc.i]) && ArrayLen(this[arguments.property]) >= loc.i && IsObject(this[arguments.property][loc.i]))
+				else if (IsStruct(arguments.value[loc.i]) && ArrayLen(this[arguments.property]) gte loc.i && IsObject(this[arguments.property][loc.i]))
 				{
 					this[arguments.property][loc.i] = $getAssociationObject(property=arguments.property, value=arguments.value[loc.i], association=arguments.association, delete=arguments.delete);
 					if (!IsStruct(this[arguments.property][loc.i]) && !this[arguments.property][loc.i])

					loc.keys = loc.model.primaryKey();
					loc.itemArray = ListToArray(loc.item, ",", true);
					loc.iEnd = ListLen(loc.keys);
					for (loc.i=1; loc.i <= loc.iEnd; loc.i++)
					{
						arguments.value[loc.item][ListGetAt(loc.keys, loc.i)] = loc.itemArray[loc.i];
					}
					ArrayAppend(this[arguments.property], $getAssociationObject(property=arguments.property, value=arguments.value[loc.item], association=arguments.association, delete=arguments.delete));
					$updateCollectionObject(property=arguments.property, value=arguments.value[loc.item]);
				}

			loc.arguments.key = $createPrimaryKeyList(params=arguments.value, keys=loc.model.primaryKey());

			if (IsObject(arguments.value))
				loc.object = arguments.value;
			else if (Len(loc.arguments.key))
				loc.object = loc.model.findByKey(argumentCollection=loc.arguments);

			if (StructKeyExists(arguments.value, "_delete") && IsBoolean(arguments.value["_delete"]) && arguments.value["_delete"])
				loc.delete = true;

			if (!IsObject(loc.object) && !loc.delete)
			{
				StructDelete(loc.arguments, "key", false);
				return $invoke(componentReference=loc.model, method="new", invokeArgs=loc.arguments);
			}
			else if (Len(loc.arguments.key) && loc.delete && arguments.association.nested.delete && arguments.delete)
