[TestMethod(), Ignore()] // This is an example structure where this class fails
        public void TestLargeBioclipseUseCase()
        {
            var smiles       = "COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56";
            var smilesParser = CDK.SmilesParser;
            var molecule     = smilesParser.ParseSmiles(smiles);

            DeduceBondSystemTool dbst = new DeduceBondSystemTool(new AllRingsFinder());

            molecule = dbst.FixAromaticBondOrders(molecule);
            Assert.IsNotNull(molecule);

            molecule = (IAtomContainer)AtomContainerManipulator.RemoveHydrogens(molecule);
            Assert.AreEqual(40, molecule.Atoms.Count);

            // we should have 14 double bonds
            int doubleBondCount = 0;

            for (int i = 0; i < molecule.Bonds.Count; i++)
            {
                IBond bond = molecule.Bonds[i];
                if (bond.Order == BondOrder.Double)
                {
                    doubleBondCount++;
                }
            }
            Assert.AreEqual(10, doubleBondCount);
        }
        public void TestPyrrole_CustomRingFinder()
        {
            var smiles       = "c2ccc3n([H])c1ccccc1c3(c2)";
            var smilesParser = new SmilesParser(builder, false);
            var molecule     = smilesParser.ParseSmiles(smiles);

            AtomContainerManipulator.SetSingleOrDoubleFlags(molecule);
            AtomContainerManipulator.PercieveAtomTypesAndConfigureAtoms(molecule);

            DeduceBondSystemTool dbst = new DeduceBondSystemTool(new AllRingsFinder());

            molecule = dbst.FixAromaticBondOrders(molecule);
            Assert.IsNotNull(molecule);

            molecule = (IAtomContainer)AtomContainerManipulator.RemoveHydrogens(molecule);
            int doubleBondCount = 0;

            for (int i = 0; i < molecule.Bonds.Count; i++)
            {
                IBond bond = molecule.Bonds[i];
                Assert.IsTrue(bond.IsAromatic);
                if (bond.Order == BondOrder.Double)
                {
                    doubleBondCount++;
                }
            }
            Assert.AreEqual(6, doubleBondCount);
        }
        public void TestLargeRingSystem()
        {
            var smiles       = "O=C1Oc6ccccc6(C(O)C1C5c2ccccc2CC(c3ccc(cc3)c4ccccc4)C5)";
            var smilesParser = CDK.SmilesParser;
            var molecule     = smilesParser.ParseSmiles(smiles);

            DeduceBondSystemTool dbst = new DeduceBondSystemTool(new AllRingsFinder());

            molecule = dbst.FixAromaticBondOrders(molecule);
            Assert.IsNotNull(molecule);

            molecule = (IAtomContainer)AtomContainerManipulator.RemoveHydrogens(molecule);
            Assert.AreEqual(34, molecule.Atoms.Count);

            // we should have 14 double bonds
            int doubleBondCount = 0;

            for (int i = 0; i < molecule.Bonds.Count; i++)
            {
                IBond bond = molecule.Bonds[i];
                if (bond.Order == BondOrder.Double)
                {
                    doubleBondCount++;
                }
            }
            Assert.AreEqual(13, doubleBondCount);
        }