code: public String getNaturalAnalog(MonomerStore monomerStore) {
      String baseNotation = null;
      String notation = getNotation();
      char[] notationChar = notation.toCharArray();
      for (int i = 0; i < notationChar.length; i++) {
        if (notationChar[i] == '[') {
          int pos = NucleotideParser.getMatchingBracketPosition(notationChar, i, '[', ']');
          i = pos;
          continue;
        }
        // must be the base
        if (notationChar[i] == '(') {
          int pos = NucleotideParser.getMatchingBracketPosition(notationChar, i, '(', ')');
          baseNotation = notation.substring(i + 1, pos);
          break;
  
        }
      }
  
      // No base found
      if (baseNotation == null) {
        return "X";
      }
      // remove first and last bracket
      if ((baseNotation.charAt(0) == '[')
          && (baseNotation.charAt(baseNotation.length() - 1) == ']')) {
        baseNotation = baseNotation.substring(1, baseNotation.length() - 1);
      } else {
        baseNotation = baseNotation;
      }
  
      try {
  
        Map<String, Monomer> monomers = monomerStore.getMonomers(Monomer.NUCLIEC_ACID_POLYMER_TYPE);
        Monomer m = monomers.get(baseNotation);
  
        if (m == null) {
          Map<String, Monomer> smiles = monomerStore.getSmilesMonomerDB();
          m = smiles.get(baseNotation);
        }
  
        return m.getNaturalAnalog();
      } catch (Exception e) {
        LOG.info("Unable to get natural analog for "
            + baseNotation);
        return "X";
      }
    }
docs: return the natural analog of this nucleotide
  
  @param monomerStore - store in which base monomer is located
  @return natural Analog or X if natural analog is not available