code: private static boolean processRadicals(CharIter iter, CxSmilesState state) {
          if (state.atomRads == null)
              state.atomRads = new TreeMap<>();
          CxSmilesState.Radical rad;
          switch (iter.next()) {
              case '1':
                  rad = CxSmilesState.Radical.Monovalent;
                  break;
              case '2':
                  rad = CxSmilesState.Radical.Divalent;
                  break;
              case '3':
                  rad = CxSmilesState.Radical.DivalentSinglet;
                  break;
              case '4':
                  rad = CxSmilesState.Radical.DivalentTriplet;
                  break;
              case '5':
                  rad = CxSmilesState.Radical.Trivalent;
                  break;
              case '6':
                  rad = CxSmilesState.Radical.TrivalentDoublet;
                  break;
              case '7':
                  rad = CxSmilesState.Radical.TrivalentQuartet;
                  break;
              default:
                  return false;
          }
          if (!iter.nextIf(':'))
              return false;
          List<Integer> dest = new ArrayList<>(4);
          if (!processIntList(iter, COMMA_SEPARATOR, dest))
              return false;
          for (Integer atomidx : dest)
              state.atomRads.put(atomidx, rad);
          return true;
      }
docs: CXSMILES radicals.
  
  @param iter input characters, iterator is progressed by this method
  @param state output CXSMILES state
  @return parse was a success (or not)