} else if (iscoll) {
// collection without a wrapper element
CollectionElement coll = (CollectionElement)comp;
String itype = coll.getItemTypeName();
TemplateElementBase ref = coll.getDefinitions().getSpecificTemplate(itype);
if (ref instanceof MappingElement) {
// item type with concrete mapping, make it an element
MappingDetail detail = m_detailDirectory.getMappingDetail((MappingElementBase)ref);
ElementElement item = new ElementElement();
QName oname = detail.getOtherName();
setElementRef(oname, item, hold);
item.setMinOccurs(Count.COUNT_ZERO);
item.setMaxOccurs(Count.COUNT_UNBOUNDED);
addItemDocumentation(coll, item);
cdef.getParticleList().add(item);
} else {
// TODO: handle this with xs:any strict?
m_context.addWarning("Handling not implemented for unspecified mapping", coll);
}
} else if (comp instanceof StructureElement) {
// no children, must be mapping reference
StructureElement struct = (StructureElement)comp;
MappingElementBase ref = (MappingElementBase)struct.getEffectiveMapping();
if (ref == null) {
// TODO: handle this with xs:any strict?
m_context.addWarning("Handling not implemented for unspecified mapping", struct);
} else {
// handle mapping reference based on form and name use
MappingDetail detail = m_detailDirectory.getMappingDetail(ref);
if (ref.isAbstract()) {
// abstract inline treated as group
GroupRefElement group = new GroupRefElement();
setGroupRef(detail.getOtherName(), group, hold);
if (comp.isOptional()) {