pub fn assert_invariants_pre<'store, IdN, P, HAST>(p: &P, store: &'store HAST)where
    IdN: Eq + Hash + Debug + Clone + NodeId,
    P: WithPreOrderPath<IdN> + RootedPosition<IdN>,
    HAST: HyperAST<'store, IdN = IdN::IdN, Idx = P::Idx>,
    <IdN as NodeId>::IdN: PartialEq<<<IdN as NodeId>::IdN as NodeId>::IdN> + Debug,
    <<IdN as NodeId>::IdN as NodeId>::IdN: Debug,