class StructureResonanceGenerator {

    public IAtomContainerSet getStructures(IAtomContainer molecule) {
        int countStructure = 0;
        IAtomContainerSet setOfMol = molecule.getBuilder().newInstance(IAtomContainerSet.class);
        setOfMol.addAtomContainer(molecule);

        for (int i = 0; i < setOfMol.getAtomContainerCount(); i++) {
            IAtomContainer mol = setOfMol.getAtomContainer(i);
            for (IReactionProcess aReactionsList : reactionsList) {
                IReactionProcess reaction = aReactionsList;
                IAtomContainerSet setOfReactants = molecule.getBuilder().newInstance(IAtomContainerSet.class);
                setOfReactants.addAtomContainer(mol);
                try {
                    IReactionSet setOfReactions = reaction.initiate(setOfReactants, null);
                    if (setOfReactions.getReactionCount() != 0)
                        for (int k = 0; k < setOfReactions.getReactionCount(); k++)
                            for (int j = 0; j < setOfReactions.getReaction(k).getProducts().getAtomContainerCount(); j++) {
                                IAtomContainer product = setOfReactions.getReaction(k).getProducts()
                                        .getAtomContainer(j);
                                if (!existAC(setOfMol, product)) {
                                    setOfMol.addAtomContainer(product);
                                    countStructure++;
                                    if (countStructure > maxStructures) return setOfMol;
                                }
                            }
                } catch (CDKException e) {
                    e.printStackTrace();
                }
            }
        }
        return setOfMol;
    }

    public  StructureResonanceGenerator();
    public  StructureResonanceGenerator(boolean lookingSymmetry);

}