private bool TryGetDiscriminatorFor(
            DataContract dataContract,
            SchemaRepository schemaRepository,
            IEnumerable <DataContract> knownTypesDataContracts,
            ParameterInfo parameterInfo,
            out OpenApiDiscriminator discriminator)
        {
            discriminator = null;

            var discriminatorName = _generatorOptions.DiscriminatorNameSelector(dataContract.UnderlyingType)
                                    ?? dataContract.ObjectTypeNameProperty;

            if (discriminatorName == null)
            {
                return(false);
            }

            discriminator = new OpenApiDiscriminator
            {
                PropertyName = discriminatorName
            };

            foreach (var knownTypeDataContract in knownTypesDataContracts)
            {
                var discriminatorValue = _generatorOptions.DiscriminatorValueSelector(knownTypeDataContract.UnderlyingType)
                                         ?? knownTypeDataContract.ObjectTypeNameValue;

                if (discriminatorValue == null)
                {
                    continue;
                }

                discriminator.Mapping.Add(discriminatorValue, GenerateConcreteSchema(knownTypeDataContract, schemaRepository, parameterInfo).Reference.ReferenceV3);
            }

            return(true);
        }