code: private int[] map(int u, int v, int[] us, int[] mapping) {
  
          // implicit hydrogen in query but explicit in target, modify the mapping
          // such that the central atom, u, mapps to the hydrogen
          if (query.getAtom(u).getImplicitHydrogenCount() == 1 && target.getAtom(v).getImplicitHydrogenCount() == 0) {
              IAtom explicitHydrogen = findHydrogen(((ITetrahedralChirality) targetElements[v]).getLigands());
              // the substructure had a hydrogen but the superstructure did not
              // the matching is not possible - if we allowed the mapping then
              // we would have different results for implicit/explicit hydrogens
              if (explicitHydrogen == null) return null;
              mapping[u] = targetMap.get(explicitHydrogen);
          }
  
          for (int i = 0; i < us.length; i++)
              us[i] = mapping[us[i]];
  
          mapping[u] = v; // remove temporary mapping to hydrogen
          return us;
      }
docs: Transforms the neighbors {@code us} adjacent to {@code u} into the target
  indices using the mapping {@code mapping}. The transformation accounts
  for an implicit hydrogen in the query being an explicit hydrogen in the
  target.
  
  @param u       central atom of tetrahedral element
  @param v       mapped central atom of the tetrahedral element
  @param us      neighboring vertices of u (u plural)
  @param mapping mapping from the query to the target
  @return the neighbors us, transformed into the neighbors around v