if (clazz.isAnnotationPresent(DoNotCacheStructure.class)) {
Holder<StructureDefinition> previousLeaf = new Holder<StructureDefinition>();
retVal = createStructureDefinition(theMessage, previousLeaf, theMessage.getName());
} else {
Message message = ReflectionUtil.instantiateMessage(clazz, getFactory());
Holder<StructureDefinition> previousLeaf = new Holder<StructureDefinition>();
retVal = createStructureDefinition(message, previousLeaf, theMessage.getName());
if (!myStructureDefinitions.containsKey(clazz)) {
myStructureDefinitions.put(clazz, new HashMap<String, StructureDefinition>());