Suppose we have a scripting zone and a deck of cards (52) inside it. Then
Code:
    zone = getObjectFromGUID('zone_guid')
    objects = zone.getObjects()
    print('Number of objects: ', #objects)               --yields "Number of objects: 1" as expected
    deck = objects[1]
    print(deck.tag)                                      --yields "Deck" as expected
    number_of_cards = #deck.getObjects()                 --yields "52" as expected
    print(number_of_cards)
    deck.dealToColor(number_of_cards, 'White')           --now we have nothing inside
    new_objects = zone.getObjects()
    print('New number of objects: ', #new_objects)       --yields "New number of objects: 1" not expected
    mysterious_object = new_objects[1]
    print(mysterious_object.tag)                         --yields "Deck"
    print(#mysterious_object.getObjects())               --yields "52"
deck and mysterious_object have the same guid.

Next let's try to deal all, but 1 card:
Code:
    zone = getObjectFromGUID('zone_guid')
    objects = zone.getObjects()
    print('Number of objects: ', #objects)               --yields "Number of objects: 1" as expected
    deck = objects[1]
    print(deck.tag)                                      --yields "Deck" as expected
    number_of_cards = #deck.getObjects()                 --yields "52" as expected
    print(number_of_cards)
    deck.dealToColor(number_of_cards - 1, 'White')       --should have 1 card inside left
    new_objects = zone.getObjects()
    print('New number of objects: ', #new_objects)       --yields "New number of objects: 1" as expected
    card= new_objects[1]
    print(card.tag)                                      --yields "Deck" not expected
    print(#card.getObjects())                            --yields "52"
Again, guids are the same.

Finally,
Code:
    zone = getObjectFromGUID('zone_guid')
    objects = zone.getObjects()
    print('Number of objects: ', #objects)               --yields "Number of objects: 1" as expected
    deck = objects[1]
    print(deck.tag)                                      --yields "Deck" as expected
    number_of_cards = #deck.getObjects()                 --yields "52" as expected
    print(number_of_cards)
    for i = 1, number_of_cards - 1 do                    --should have 1 card inside left
      deck.takeObject({position={some place
                          outside the scripting zone}})
    end
    new_objects = zone.getObjects()
    print('New number of objects: ', #new_objects)       --yields "New number of objects: 1" as expected
    card= new_objects[1]
    print(card.tag)                                      --yields "Deck" not expected
    print(#card.getObjects())                            --yields "0"
So, we are getting a deck, which is not there, with 0 cards, which is impossible according to the knowledge base. Moreover, we cannot get access to the card. Moreover, even if you know guid of the card the function getObjectFromGUID('last_card_guid') will return nil (so it seems it is still in the deck, but not really).