"Discriminador" no polimorfismo, OpenAPI 2.0 (Swagger 2.0)

ReferenciamentoOpenAPI 2.0, objeto de esquemaouSwagger 2.0, objeto de esquemae a definição dediscriminator campo como:

Adiciona suporte para polimorfismo. O discriminador é o nome da propriedade do esquema usado para diferenciar outros esquemas que herdam esse esquema. O nome da propriedade DEVE ser definido neste esquema e DEVE estar norequired lista de propriedades. Quando usado, o valor DEVE ser o nome desse esquema ou de qualquer esquema que o herda.

Minhas confusões / perguntas:

É ambíguo para mim, qual o papel que exatamente desempenha na herança ou polimorfismo. Alguém poderia explicardiscriminator com um exemplo de trabalho mostrando o que exatamente faz e se não o usarmos? Algum erro, aviso ou ferramenta que depende dele para algumas operações?É o caso queeditor de arrogância não suportadiscriminator, e esse campo é usado em outras ferramentas?

O que eu tentei até agora:

Eu tentei usareditor de arrogância e o exemplo da mesma documentação (também mencionada abaixo), para brincar com essa propriedade para ver se consigo ver algum de seus comportamentos especiais. Alterei a propriedade, removi-a e estendi oDog modelo para um nível mais profundo e tentei o mesmo no novo submodelo, mas não vi nenhuma alteração na visualização deeditor de arrogância.Tentei pesquisar online e, especialmente, perguntas sobre o stackoverflow, mas não encontrei nenhuma informação relevante.

O código de exemplo que eu costumava fazer experimentos:

definitions:
  Pet:
    type: object
    discriminator: petType
    properties:
      name:
        type: string
      petType:
        type: string
    required:
    - name
    - petType
  Cat:
    description: A representation of a cat
    allOf:
    - $ref: '#/definitions/Pet'
    - type: object
      properties:
        huntingSkill:
          type: string
          description: The measured skill for hunting
          default: lazy
          enum:
          - clueless
          - lazy
          - adventurous
          - aggressive
      required:
      - huntingSkill
  Dog:
    description: A representation of a dog
    allOf:
    - $ref: '#/definitions/Pet'
    - type: object
      properties:
        packSize:
          type: integer
          format: int32
          description: the size of the pack the dog is from
          default: 0
          minimum: 0
      required:
      - packSize

questionAnswers(2)

yourAnswerToTheQuestion