code: private static boolean suppressibleHydrogen(final IAtomContainer container, final int[][] graph, final GraphUtil.EdgeToBondMap bondmap, final int v) {
  
          IAtom atom = container.getAtom(v);
  
          // is the atom a hydrogen
          if (!"H".equals(atom.getSymbol())) return false;
          // is the hydrogen an ion?
          if (atom.getFormalCharge() != null && atom.getFormalCharge() != 0) return false;
          // is the hydrogen deuterium / tritium?
          if (atom.getMassNumber() != null) return false;
          // hydrogen is either not attached to 0 or 2 neighbors
          if (graph[v].length != 1) return false;
          // non-single bond
          if (bondmap.get(v, graph[v][0]).getOrder() != Order.SINGLE) return false;
  
          // okay the hydrogen has one neighbor, if that neighbor is a
          // hydrogen (i.e. molecular hydrogen) then we can not suppress it
          if ("H".equals(container.getAtom(graph[v][0]).getSymbol()))
              return false;
          // can not nicely suppress hydrogens on pseudo atoms
          if (container.getAtom(graph[v][0]) instanceof IPseudoAtom)
              return false;
          return true;
      }
docs: Is the {@code atom} a suppressible hydrogen and can be represented as
  implicit. A hydrogen is suppressible if it is not an ion, not the major
  isotope (i.e. it is a deuterium or tritium atom) and is not molecular
  hydrogen.
  
  @param container the structure
  @param graph     adjacent list representation
  @param v         vertex (atom index)
  @return the atom is a hydrogen and it can be suppressed (implicit)