1800 def leave(self, visitee):
1801 stack = self.stack
1802 if visitee in (CFTrue, CFFalse):
1803 stack.append(self._newSeq(Invert=visitee is CFFalse))
1804 elif isinstance(visitee, (ControlFlowLeaf, ConfigurableAlgorithm)):
1805 stack.append(visitee)
1806 elif isinstance(visitee, (OrNode, AndNode, OrderedNode)):
1807 b = stack.pop()
1808 a = stack.pop()
1809 seq = self._newSeq(
1810 Members=[a, b],
1811 ModeOR=isinstance(visitee, OrNode),
1812 ShortCircuit=not isinstance(visitee, OrderedNode),
1813 )
1814 stack.append(seq)
1815 elif isinstance(visitee, ignore):
1816 if hasattr(stack[-1], "IgnoreFilterPassed"):
1817 stack[-1].IgnoreFilterPassed = True
1818 else:
1819 stack.append(
1820 self._newSeq(Members=[stack.pop()], IgnoreFilterPassed=True)
1821 )
1822 elif isinstance(visitee, InvertNode):
1823 if hasattr(stack[-1], "Invert"):
1824 stack[-1].Invert = True
1825 else:
1826 stack.append(self._newSeq(Members=[stack.pop()], Invert=True))
1827
1828