class StandardBondGenerator {

    static Map<IBond, IAtomContainer> ringPreferenceMap(IAtomContainer container,
                                                        IRingSet smallest) {

        if (smallest == null)
            smallest = Cycles.edgeShort(container).toRingSet();

        final List<IAtomContainer> rings = AtomContainerSetManipulator.getAllAtomContainers(smallest);

        Collections.sort(rings, new RingBondOffsetComparator(container));

        final Map<IBond, IAtomContainer> ringMap = new HashMap<IBond, IAtomContainer>();

        // index bond -> ring based on the first encountered bond
        for (IAtomContainer ring : rings) {
            normalizeRingWinding(ring);
            for (IBond bond : ring.bonds()) {
                if (ringMap.containsKey(bond)) continue;
                ringMap.put(bond, ring);
            }
        }

        return Collections.unmodifiableMap(ringMap);
    }

    private  StandardBondGenerator(IAtomContainer container,
                                  AtomSymbol[] symbols,
                                  RendererModel parameters,
                                  ElementGroup annotations,
                                  Font font,
                                  double stroke,
                                  StandardDonutGenerator donutGen);

}