docs: def are_equivalent_pyxb(a_pyxb, b_pyxb, ignore_timestamps=False):
      """Determine if SystemMetadata PyXB objects are semantically equivalent.
  
      Normalize then compare SystemMetadata PyXB objects for equivalency.
  
      Args:
        a_pyxb, b_pyxb : SystemMetadata PyXB objects to compare
  
        reset_timestamps: bool
          ``True``: Timestamps in the SystemMetadata are set to a standard value so that
          objects that are compared after normalization register as equivalent if only
          their timestamps differ.
  
      Returns:
        bool: **True** if SystemMetadata PyXB objects are semantically equivalent.
  
      Notes:
        The SystemMetadata is normalized by removing any redundant information and
        ordering all sections where there are no semantics associated with the order. The
        normalized SystemMetadata is intended to be semantically equivalent to the
        un-normalized one.
  
      """
      normalize_in_place(a_pyxb, ignore_timestamps)
      normalize_in_place(b_pyxb, ignore_timestamps)
      a_xml = d1_common.xml.serialize_to_xml_str(a_pyxb)
      b_xml = d1_common.xml.serialize_to_xml_str(b_pyxb)
      are_equivalent = d1_common.xml.are_equivalent(a_xml, b_xml)
      if not are_equivalent:
          logger.debug('XML documents not equivalent:')
          logger.debug(d1_common.xml.format_diff_xml(a_xml, b_xml))
      return are_equivalent