@Test
public void testPolyCyclicSystem() throws Exception {

    CDKHydrogenAdder adder = CDKHydrogenAdder.getInstance(DefaultChemObjectBuilder.getInstance());
    SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance());
    IAtomContainer kekuleForm = sp.parseSmiles("C1=CC2=CC3=CC4=C(C=CC=C4)C=C3C=C2C=C1");
    AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(kekuleForm);
    adder.addImplicitHydrogens(kekuleForm);
    AtomContainerManipulator.convertImplicitToExplicitHydrogens(kekuleForm);
    IAtomContainer aromaticForm = sp.parseSmiles("c1ccc2cc3cc4ccccc4cc3cc2c1");
    AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(aromaticForm);
    adder.addImplicitHydrogens(aromaticForm);
    AtomContainerManipulator.convertImplicitToExplicitHydrogens(aromaticForm);
    boolean isAromatic = DoubleBondAcceptingAromaticityDetector.detectAromaticity(kekuleForm);
    Assert.assertTrue(isAromatic);
    isAromatic = DoubleBondAcceptingAromaticityDetector.detectAromaticity(aromaticForm);
    Assert.assertTrue(isAromatic);
    // double bond locations may alter. So, we can expect things like in a 'diff': "BondDiff{order:SINGLE/DOUBLE}"
    // but, we should not see aromaticity differences
    for (IAtom atom : aromaticForm.atoms()) {
        if ("C".equals(atom.getSymbol())) {
            Assert.assertEquals("C.sp2", atom.getAtomTypeName());
            Assert.assertTrue(atom.getFlag(CDKConstants.ISAROMATIC));
        }
    }
    for (IAtom atom : kekuleForm.atoms()) {
        if ("C".equals(atom.getSymbol())) {
            Assert.assertEquals("C.sp2", atom.getAtomTypeName());
            Assert.assertTrue(atom.getFlag(CDKConstants.ISAROMATIC));
        }
    }
}