code: def _parse_batch_get(get_doc_response, reference_map, client):
      
      result_type = get_doc_response.WhichOneof("result")
      if result_type == "found":
          reference = _get_reference(get_doc_response.found.name, reference_map)
          data = _helpers.decode_dict(get_doc_response.found.fields, client)
          snapshot = DocumentSnapshot(
              reference,
              data,
              exists=True,
              read_time=get_doc_response.read_time,
              create_time=get_doc_response.found.create_time,
              update_time=get_doc_response.found.update_time,
          )
      elif result_type == "missing":
          snapshot = DocumentSnapshot(
              None,
              None,
              exists=False,
              read_time=get_doc_response.read_time,
              create_time=None,
              update_time=None,
          )
      else:
          raise ValueError(
              "`BatchGetDocumentsResponse.result` (a oneof) had a field other "
              "than `found` or `missing` set, or was unset"
          )
      return snapshot
docs: Parse a `BatchGetDocumentsResponse` protobuf.
  
      Args:
          get_doc_response (~google.cloud.proto.firestore.v1beta1.\
              firestore_pb2.BatchGetDocumentsResponse): A single response (from
              a stream) containing the "get" response for a document.
          reference_map (Dict[str, .DocumentReference]): A mapping (produced
              by :func:`_reference_info`) of fully-qualified document paths to
              document references.
          client (~.firestore_v1beta1.client.Client): A client that has
              a document factory.
  
      Returns:
         [.DocumentSnapshot]: The retrieved snapshot.
  
      Raises:
          ValueError: If the response has a ``result`` field (a oneof) other
              than ``found`` or ``missing``.