code: async def _get_psml_struct(self, fd):
          
          data = b''
          psml_struct = None
  
          if self._only_summaries:
              # If summaries are read, we need the psdml structure which appears on top of the file.
              while not psml_struct:
                  new_data = await fd.read(self.SUMMARIES_BATCH_SIZE)
                  data += new_data
                  psml_struct, data = self._extract_tag_from_data(data, b'structure')
                  if psml_struct:
                      psml_struct = psml_structure_from_xml(psml_struct)
                  elif not new_data:
                      return None, data
              return psml_struct, data
          else:
              return None, data
docs: Gets the current PSML (packet summary xml) structure in a tuple ((None, leftover_data)),
          only if the capture is configured to return it, else returns (None, leftover_data).
  
          A coroutine.