if (td == null && m.containsKey("comp")) {
@SuppressWarnings("unchecked")
final List<Map<String,Object>> tmaps = (List<Map<String,Object>>)m.get(MetamodelGenerator.KEY_TYPES);
final ArrayList<ProducedType> types = new ArrayList<ProducedType>(tmaps.size());
if ("u".equals(m.get("comp"))) {
UnionType ut = new UnionType(u2);
for (Map<String, Object> tmap : tmaps) {
Util.addToUnion(types, getTypeFromJson(tmap, container, typeParams));
}
ut.setCaseTypes(types);
td = ut;
} else if ("i".equals(m.get("comp"))) {
IntersectionType it = new IntersectionType(u2);
for (Map<String, Object> tmap : tmaps) {
Util.addToIntersection(types, getTypeFromJson(tmap, container, typeParams), u2);