ElementType result;
if (ElementTypeDefinition.SEQUENCE.is(type)){
result = new SequenceElementTypeImpl(this, parent, createId(), def);
log.debug("Created sequence element definition");
} else if (ElementTypeDefinition.BLOCK.is(type)) {
result = new BlockElementTypeImpl(this, parent, createId(), def);
log.debug("Created iteration element definition");
} else if (ElementTypeDefinition.ITERATION.is(type)) {
result = new IterationElementTypeImpl(this, parent, createId(), def);
log.debug("Created iteration element definition");
} else if (ElementTypeDefinition.ONE_OF.is(type)) {