code: def _parse_struct(schema, data):
      def parse_field(
          name: str, value: Any, schema: Dict[str, Any]
      ) -> Any:
          typ: str = schema["type"]
          mode: str = schema["mode"]
  
          if typ in ("RECORD", "STRUCT"):
              if mode == "REPEATED":
                  return [
                      ResultsParser._parse_struct(schema, v["v"])
                      for v in value
                  ]
              return ResultsParser._parse_struct(schema, value)
          if typ == "STRING":
              return or_none(str, value)
          if typ in ("FLOAT", "FLOAT64"):
              return or_none(float, value)
          if typ in ("INTEGER", "INT64"):
              return or_none(int, value)
          if typ in ("BOOLEAN", "BOOL"):
              return or_none(bool, value)
          if typ == "TIMESTAMP":
              return int(or_none(float, value))
          # DATE, TIME, DATETIME
          raise NotImplementedError((name, value, typ, mode))
  
      return {
          field["name"]: parse_field(
              field["name"], field["v"], field_schema
          )
          for field, field_schema in zip(data["f"], schema["fields"])
      }
  
file_path: hail/hail/python/hailtop/aiocloud/aiogoogle/client/bigquery_client.py
imports: from typing import Any, Dict, Mapping, Optional
  from .base_client import GoogleBaseClient
label_desc: Use image node_id 1 for calling the ResultsParser obj's underlying member method code with example usage: obj._parse_struct(schema, data) and returns: unknown, ResultsParser, or_none, or_none, or_none, or_none, int, unknown