public Type GetType(IOpenApiObjectToTypeService objectService,
                            IObjectsProcessingKeyStore objectKeyStore,
                            IOpenApiType openApiType,
                            IDictionary <string, IOpenApiType> definitions,
                            string suggestedObjectName = null)
        {
            if (openApiType is OpenApiPrimitiveType)
            {
                return(_primitiveService.GetType((OpenApiPrimitiveType)openApiType,
                                                 nameIfEnum: suggestedObjectName));
            }

            if (openApiType.Matches <OpenApiReferencedType>())
            {
                return(_referenceService.GetType(objectService,
                                                 typeResolver: this,
                                                 objectKeyStore,
                                                 (OpenApiReferencedType)openApiType,
                                                 definitions));
            }

            if (openApiType.Matches <OpenApiObjectType>())
            {
                return(objectService.GetType((OpenApiObjectType)openApiType,
                                             definitions,
                                             suggestedObjectName,
                                             objectKeyStore));
            }

            if (openApiType.Matches <OpenApiArrayType>())
            {
                var memberType      = ((OpenApiArrayType)openApiType).Items;
                var arrayMemberType = GetType(objectService,
                                              objectKeyStore,
                                              memberType,
                                              definitions,
                                              suggestedObjectName + "Member");

                return(typeof(IEnumerable <>).MakeGenericType(arrayMemberType));
            }

            throw new NotSupportedException($"Unable to convert unsupported " +
                                            $"OpenApi Type {openApiType.GetType()}");
        }