code: public static <I> void structuralCover(DeterministicAutomaton<?, I, ?> automaton,
                                             Collection<? extends I> inputs,
                                             Collection<? super Word<I>> cover) {
          cover(automaton, inputs, cover::add, cover::add);
      }
docs: Computes a structural cover for a given automaton.
  <p>
  A structural cover is the union of a state cover and a transition cover
  
  @param automaton
  the automaton for which the cover should be computed
  @param inputs
  the set of input symbols allowed in the cover sequences
  @param cover
  the collection in which the sequences will be stored
  @param <I>
  input symbol type
  
  @see #stateCover(DeterministicAutomaton, Collection, Collection)
  @see #transitionCover(DeterministicAutomaton, Collection, Collection)