code: @Override
      public boolean matches(IAtom atom) {
          if (!atom.getSymbol().equals("H")) {
              return false;
          }
  
          if (atom.getFormalCharge() == 1) { // proton matches
              return true;
          }
  
          // hydrogens connected to other hydrogens, e.g., molecular hydrogen
          List<IAtom> list = invariants(atom).target().getConnectedAtomsList(atom);
          for (IAtom connAtom : list) {
              if (connAtom.getSymbol().equals("H")) {
                  return true;
              }
          }
  
          // hydrogens connected to other than one other atom, e.g., bridging hydrogens
          if (invariants(atom).degree() > 1) {
              return true;
          }
  
          //isotopic hydrogen specifications, e.g. deuterium [2H] or tritium etc
          if (atom.getMassNumber() != null) {
              if (getMassNumber().intValue() == atom.getMassNumber().intValue()) return true;
          } else {
              // target atom is [H], so make sure query atom has mass number = 1
              if (getMassNumber() == 1) return true;
          }
  
          return false;
      }
docs: /*
  (non-Javadoc)
  @see
  org.openscience.cdk.isomorphism.matchers.smarts.SMARTSAtom#matches(org
  .openscience.cdk.interfaces.IAtom)