@SuppressWarnings("unchecked")
	private void loadCollection(Object obj, XmlParserContext context, Field field) throws XMLStreamException, IllegalArgumentException, IllegalAccessException, InstantiationException {
		Object collection = null;
		String marker = getMarker();
		String tag;
		while ((tag = nextTag(marker)) != null) {
			Object fieldObj = null;
			if (obj instanceof XmlParserAssistant) {
				fieldObj = ((XmlParserAssistant) obj).createObjectForXmlTag(context, tag);
			}
			if (fieldObj == null) {
				throw new XMLStreamException(String.format(UNABLE_TO_CREATE_OBJECT_FOR_COLLECTION, tag), getLocation());
			}
			loadTagIntoObject(fieldObj, context);
			if (collection == null) {
				collection = field.get(obj);
				if (collection == null) {
					Class<?> type = field.getType();
					if (type == List.class) {
						collection = new ArrayList<>();
					} else if (type == Set.class) {
						collection = new HashSet<>();
					} else {
						collection = type.newInstance();
					}
					field.set(obj, collection);
				}
			}
			if (collection instanceof Collection) {
				((Collection<Object>) collection).add(fieldObj);
			}
		}
	}