code: private static void createIDsForAtomContainer(IAtomContainer container, List<String> tabuList) {
          if (tabuList == null) tabuList = AtomContainerManipulator.getAllIDs(container);
  
          if (null == container.getID()) {
              // generate new ID and remember it
              atomContainerCount = setID(ATOMCONTAINER_PREFIX, atomContainerCount, container, tabuList);
          }
  
          // the tabu list for the container should force singularity
          // within a container only!
          List<String> internalTabuList = AtomContainerManipulator.getAllIDs(container);
          if (policy == OBJECT_UNIQUE_POLICY) {
              // start atom and bond indices within a container set always from 1
              atomCount = 0;
              bondCount = 0;
          } else {
              internalTabuList = tabuList;
          }
  
          Iterator<IAtom> atoms = container.atoms().iterator();
          while (atoms.hasNext()) {
              IAtom atom = atoms.next();
              if (null == atom.getID()) {
                  atomCount = setID(ATOM_PREFIX, atomCount, atom, internalTabuList);
              }
          }
  
          Iterator<IBond> bonds = container.bonds().iterator();
          while (bonds.hasNext()) {
              IBond bond = bonds.next();
              if (null == bond.getID()) {
                  bondCount = setID(BOND_PREFIX, bondCount, bond, internalTabuList);
              }
          }
      }
docs: Labels the Atom's and Bond's in the AtomContainer using the a1, a2, b1, b2
  scheme often used in CML.
  
  @see #createIDs(org.openscience.cdk.interfaces.IChemObject)