def test03(self):
        """Test with multiple generations (Group case, recursive remove)"""

        if common.verbose:
            print('\n', '-=' * 30)
            print("Running %s.test03..." % self.__class__.__name__)

        # Enable undo/redo.
        self.h5file.enable_undo()

        # remove /agroup
        self.h5file.remove_node('/agroup', recursive=1)

        # Create a group in the same place
        self.h5file.create_group(self.h5file.root, 'agroup', "Group title 2")

        # remove the group
        self.h5file.remove_node('/agroup')

        # Create a group
        self.h5file.create_group(self.h5file.root, 'agroup', "Group title 3")

        # remove the group
        self.h5file.remove_node('/agroup')

        # Create a group
        self.h5file.create_group(self.h5file.root, 'agroup', "Group title 4")

        # Create a child group
        self.h5file.create_group(self.h5file.root.agroup, 'agroup5',
                                 "Group title 5")
        # Undo the actions
        self.h5file.undo()

        # Check that /agroup is in the state before enabling do/undo
        self.assertTrue('/agroup' in self.h5file)
        self.assertEqual(self.h5file.root.agroup._v_title, "Group title")
        self.assertTrue('/agroup/anarray1' in self.h5file)
        self.assertTrue('/agroup/anarray2' in self.h5file)
        self.assertTrue('/agroup/agroup3' in self.h5file)
        self.assertTrue(self.h5file not in '/agroup/agroup5')

        # Redo the actions
        self.h5file.redo()
        self.assertTrue('/agroup' in self.h5file)
        self.assertEqual(self.h5file.root.agroup._v_title, "Group title 4")
        self.assertTrue('/agroup/agroup5' in self.h5file)
        self.assertEqual(
            self.h5file.root.agroup.agroup5._v_title, "Group title 5")
dataset/ETHPy150Open PyTables/PyTables/tables/tests/test_do_undo.py/ComplexTestCase.test03/swapped operands of `not in`