def seal_on_store(protocol):
    """
    Implicitly adds seal/cover instructions to the end of a run for containers
    that do not have a cover.   Cover type applied defaults first to
    "seal" if its within the capabilities of the container type, otherwise
    to "cover".

    Example Usage:

        .. code-block:: python

            def example_method(protocol, params):
            cont = params['container']
            p.transfer(cont.well("A1"), cont.well("A2"), "10:microliter")
            p.seal(cont)
            p.unseal(cont)
            p.cover(cont)
            p.uncover(cont)

    Autoprotocol Output:

        .. code-block:: json

            {
              "refs": {
                "plate": {
                  "new": "96-pcr",
                  "store": {
                    "where": "ambient"
                  }
                }
              },
              "instructions": [
                {
                  "groups": [
                    {
                      "transfer": [
                        {
                          "volume": "10.0:microliter",
                          "to": "plate/1",
                          "from": "plate/0"
                        }
                      ]
                    }
                  ],
                  "op": "pipette"
                },
                {
                  "object": "plate",
                  "type": "ultra-clear",
                  "op": "seal"
                },
                {
                  "object": "plate",
                  "op": "unseal"
                },
                {
                  "lid": "universal",
                  "object": "plate",
                  "op": "cover"
                },
                {
                  "object": "plate",
                  "op": "uncover"
                },
                {
                  "type": "ultra-clear",
                  "object": "plate",
                  "op": "seal"
                }
              ]
            }

    """
    for _, ref in protocol.refs.items():
        if 'store' in ref.opts.keys():
            if not (ref.container.is_covered() or ref.container.is_sealed()):
                default_method = (ref.container.container_type.
                    prioritize_seal_or_cover)
                sealable = 'seal' in ref.container.container_type.capabilities
                coverable = ('cover' in ref.container.container_type.
                    capabilities)
                if default_method == 'seal' and sealable:
                    protocol.seal(ref.container, ref.container.
                        container_type.seal_types[0])
                elif default_method == 'cover' and coverable:
                    protocol.cover(ref.container, ref.container.
                        container_type.cover_types[0])
                elif sealable:
                    protocol.seal(ref.container, ref.container.
                        container_type.seal_types[0])
                elif coverable:
                    protocol.cover(ref.container, ref.container.
                        container_type.cover_types[0])
                else:
                    continue
