<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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