code: public DMNType resolveTypeRef(DMNModelImpl dmnModel, NamedElement model, DMNModelInstrumentedBase localElement, QName typeRef) {
          if ( typeRef != null ) {
              QName nsAndName = getNamespaceAndName(localElement, dmnModel.getImportAliasesForNS(), typeRef, dmnModel.getNamespace());
  
              DMNType type = dmnModel.getTypeRegistry().resolveType(nsAndName.getNamespaceURI(), nsAndName.getLocalPart());
              if (type == null && localElement.getURIFEEL().equals(nsAndName.getNamespaceURI())) {
                  if ( model instanceof Decision && ((Decision) model).getExpression() instanceof DecisionTable ) {
                      DecisionTable dt = (DecisionTable) ((Decision) model).getExpression();
                      if ( dt.getOutput().size() > 1 ) {
                          // implicitly define a type for the decision table result
                          CompositeTypeImpl compType = new CompositeTypeImpl( dmnModel.getNamespace(), model.getName()+"_Type", model.getId(), dt.getHitPolicy().isMultiHit() );
                          for ( OutputClause oc : dt.getOutput() ) {
                              DMNType fieldType = resolveTypeRef(dmnModel, model, oc, oc.getTypeRef());
                              compType.addField( oc.getName(), fieldType );
                          }
                          dmnModel.getTypeRegistry().registerType( compType );
                          return compType;
                      } else if ( dt.getOutput().size() == 1 ) {
                          return resolveTypeRef(dmnModel, model, dt.getOutput().get(0), dt.getOutput().get(0).getTypeRef());
                      }
                  }
              } else if( type == null ) {
                  MsgUtil.reportMessage( logger,
                                         DMNMessage.Severity.ERROR,
                                         localElement,
                                         dmnModel,
                                         null,
                                         null,
                                         Msg.UNKNOWN_TYPE_REF_ON_NODE,
                                         typeRef.toString(),
                                         localElement.getParentDRDElement().getIdentifierString() );
                  type = dmnModel.getTypeRegistry().unknown();
              }
              return type;
          }
          return dmnModel.getTypeRegistry().unknown();
      }
docs: Resolve the QName typeRef accordingly to definition of builtin (FEEL) types, local model ItemDef or imported definitions.
  If the typeRef cannot be resolved, (FEEL) UNKNOWN is returned and an error logged using standard DMN message logging.