pub(crate) fn cleanup_removed_axis_pts(module: &mut Module, removed_items: &HashSet<String>) {
    if removed_items.is_empty() {
        return;
    }

    for characteristic in &mut module.characteristic {
        for axis_descr in &mut characteristic.axis_descr {
            if let Some(axis_pts_ref) = &axis_descr.axis_pts_ref {
                if removed_items.get(&axis_pts_ref.axis_points).is_some() {
                    axis_descr.axis_pts_ref = None;
                }
            }
        }
    }

    for typedef_characteristic in &mut module.typedef_characteristic {
        for axis_descr in &mut typedef_characteristic.axis_descr {
            if let Some(axis_pts_ref) = &axis_descr.axis_pts_ref {
                if removed_items.get(&axis_pts_ref.axis_points).is_some() {
                    axis_descr.axis_pts_ref = None;
                }
            }
        }
    }
}
// when update runs without preserve, AXIS_PTS be removed from the module
// AXIS_PTS are only referenced through CHARACTERISTIC > AXIS_DESCR > AXIS_PTS_REF
when update runs without preserve, AXIS_PTS be removed from the module
AXIS_PTS are only referenced through CHARACTERISTIC > AXIS_DESCR > AXIS_PTS_REF
when update runs without preserve AXIS_PTS be removed from the module AXIS_PTS are only referenced through CHARACTERISTIC > AXIS_DESCR > AXIS_PTS_REF
pub(crate) fn cleanup_removed_axis_pts(module: &mut Module, removed_items: &HashSet<String>) {
    if removed_items.is_empty() {
        return;
    }
    for characteristic in &mut module.characteristic {
        for axis_descr in &mut characteristic.axis_descr {
            if let Some(axis_pts_ref) = &axis_descr.axis_pts_ref {
                if removed_items.get(&axis_pts_ref.axis_points).is_some() {
                    axis_descr.axis_pts_ref = None;
                }
            }
        }
    }
    for typedef_characteristic in &mut module.typedef_characteristic {
        for axis_descr in &mut typedef_characteristic.axis_descr {
            if let Some(axis_pts_ref) = &axis_descr.axis_pts_ref {
                if removed_items.get(&axis_pts_ref.axis_points).is_some() {
                    axis_descr.axis_pts_ref = None;
                }
            }
        }
    }
}
pub ( crate ) fn cleanup_removed_axis_pts ( module : & mut Module , removed_items : & HashSet < String > ) { if removed_items . is_empty ( ) { return ; } for characteristic in & mut module . characteristic { for axis_descr in & mut characteristic . axis_descr { if let Some ( axis_pts_ref ) = & axis_descr . axis_pts_ref { if removed_items . get ( & axis_pts_ref . axis_points ) . is_some ( ) { axis_descr . axis_pts_ref = None ; } } } } for typedef_characteristic in & mut module . typedef_characteristic { for axis_descr in & mut typedef_characteristic . axis_descr { if let Some ( axis_pts_ref ) = & axis_descr . axis_pts_ref { if removed_items . get ( & axis_pts_ref . axis_points ) . is_some ( ) { axis_descr . axis_pts_ref = None ; } } } } }
when update runs without preserve, AXIS_PTS be removed from the module
AXIS_PTS are only referenced through CHARACTERISTIC > AXIS_DESCR > AXIS_PTS_REF
when update runs without preserve AXIS_PTS be removed from the module AXIS_PTS are only referenced through CHARACTERISTIC > AXIS_DESCR > AXIS_PTS_REF
module
&mut Module
removed_items
&HashSet<String>