code: private static boolean parseIsotope(CharIter iter,
                                          IMolecularFormula mf,
                                          boolean setMajor) {
          Elements elem = null;
          int mass = 0;
          int count = 0;
          if (iter.nextIf('[')) {
              mass = iter.nextUInt();
              if (mass < 0)
                  return false;
              if (!iter.nextIf(']'))
                  return false;
          }
          char c1 = iter.next();
          char c2 = iter.next();
          if (!isLower(c2)) {
              // could use a switch, see SMARTS parser
              elem = Elements.ofString("" + c1);
              if (c2 != '\0')
                  iter.pos--;
          } else {
              elem = Elements.ofString("" + c1 + c2);
          }
          count = iter.nextUInt();
          if (count < 0)
              count = 1;
          IIsotope isotope = mf.getBuilder().newInstance(IIsotope.class, elem.symbol());
          isotope.setAtomicNumber(elem.number());
          if (mass != 0)
              isotope.setMassNumber(mass);
          else if (setMajor) {
              try {
                  IIsotope major = Isotopes.getInstance().getMajorIsotope(elem.number());
                  if (major != null)
                      isotope.setMassNumber(major.getMassNumber());
              } catch (IOException ex) {
                  // ignored
              }
          }
          mf.addIsotope(isotope, count);
          return true;
      }
docs: ('[' <DIGIT> ']')? <UPPER> <LOWER>? <DIGIT>+?