private TypeAndForgePair handleTypableExpression(ExprForge forge, int expressionNum, EventTypeNameGeneratorStatement eventTypeNameGeneratorStatement) throws ExprValidationException { if (!(forge instanceof ExprTypableReturnForge)) { return null; } ExprTypableReturnForge typable = (ExprTypableReturnForge) forge; LinkedHashMap<String, Object> eventTypeExpr = typable.getRowProperties(); if (eventTypeExpr == null) { return null; } String eventTypeName = eventTypeNameGeneratorStatement.getAnonymousTypeNameWithInner(expressionNum); EventTypeMetadata metadata = new EventTypeMetadata(eventTypeName, args.getModuleName(), EventTypeTypeClass.STATEMENTOUT, EventTypeApplicationType.MAP, NameAccessModifier.TRANSIENT, EventTypeBusModifier.NONBUS, false, EventTypeIdPair.unassigned()); Map<String, Object> propertyTypes = EventTypeUtility.getPropertyTypesNonPrimitive(eventTypeExpr); EventType mapType = BaseNestableEventUtil.makeMapTypeCompileTime(metadata, propertyTypes, null, null, null, null, args.getBeanEventTypeFactoryPrivate(), args.getEventTypeCompileTimeResolver()); args.getEventTypeCompileTimeRegistry().newType(mapType); ExprForge newForge = new SelectExprProcessorTypableMapForge(mapType, forge); return new TypeAndForgePair(mapType, newForge); }