code: private void checkPreconditions(IAtomContainer container) {
          for (IAtom atom : container.atoms()) {
              if (atom.getImplicitHydrogenCount() == null || atom.getImplicitHydrogenCount() != 0)
                  throw new IllegalArgumentException("Hydrogens should be unsuppressed (explicit)");
              if (atom.getFlag(CDKConstants.ISAROMATIC))
                  throw new IllegalArgumentException("No aromatic flags should be set");
          }
      }
docs: preconditions, 1. all hydrogens must be present as explicit nodes in the connection table.
  this requires that each atom explicitly states it has exactly 0 hydrogens 2. the SMARTS treat
  all atoms as aliphatic and therefore no aromatic flags should be set, we could remove this
  but ideally we don't want to modify the structure
  
  @param container input structure representation