ndb.StructuredProperty não está chamando métodos de subclasse ndb.PolyModel

Ao armazenar superclasses de ndb.Polymodel como ndb.StructuredProperty, não consegui acessar métodos de subclasse; Os métodos da superclasse foram chamados em vez disso e aumentaram o NotImplementedError's. Aqui está uma versão abreviada do que estou tentando realizar.

class Recipient(polymodel.PolyModel):
  name = ndb.StringProperty()

  def PrettyPrinting(self):
    raise NotImplementedError, 'Rawr'


class ShippingRecipient(Recipient):
  address_line_one = ndb.StringProperty()
  #there are other properties, but they aren't necessary here.

  def PrettyPrinting(self):
    return 'Hey, this should be called.'


class LocalRecipient(Recipient):
  distribution_location = ndb.StringProperty()
  #same deal, more attributes, but useless for this example.

  def PrettyPrinting(self):
    return 'Hey this should be called.'

class Shipment(ndb.Model):
  recipient = ndb.StructuredProperty(Recipient)

Agora, digamos que salvei uma remessa e armazenei um ShippingRecipient no campo de destinatário da remessa. No armazenamento de dados, a remessa recipient.class == ['Recipient', 'ShippingRecipient']. Quando eu chamo:

shipment = Shipment.get_by_id('some_key')
shipment.recipient.PrettyPrinting()

O NotImplementedError é gerado em vez da implementação ShippingRecipient de PrettyPrinting (...). Eu quero que o método de subclasse seja chamado ao acessar o campo de destinatário da remessa. Existe uma maneira de obter o método da subclasse? Eu sei que dizer que a propriedade estruturada é do tipo Recipient faz com que o método da superclasse seja chamado, mas talvez eu não entenda completamente porque eles armazenariam a subclasse no atributo recipient.class.