code: private int valence(int element) {
          switch (element) {
              case 5: // boron
              case 13: // aluminium
              case 31: // gallium
                  return 3;
              case CARBON:
              case 14: // silicon
              case 32: // germanium
                  return 4;
              case NITROGEN:
              case PHOSPHORUS:
              case ARSENIC:
                  return 5;
              case OXYGEN:
              case SULPHUR:
              case SELENIUM:
                  return 6;
              case 9: // fluorine
              case 17: // chlorine
              case 35: // bromine
                  return 7;
          }
          throw new UnsupportedOperationException("Valence not yet handled for element with atomic number " + element);
      }
docs: Lookup of the number of valence electrons for elements near those which
  this model considers aromatic. As only the {@link #aromaticElement(int)}
  are checked we need only consider elements within a charge range.
  
  @param element the atomic number of an element
  @return the valence
  @throws UnsupportedOperationException encountered an element which the
  valence was not encoded for