public static <I> void structuralCover(DeterministicAutomaton<?, I, ?> automaton,
                                           Collection<? extends I> inputs,
                                           Collection<? super Word<I>> cover) {
        cover(automaton, inputs, cover::add, cover::add);
    }
public static < I > void structuralCover ( DeterministicAutomaton < ? , I , ? > automaton , Collection < ? extends I > inputs , Collection < ? super Word < I > > cover ) { cover ( automaton , inputs , cover :: add , cover :: add ) ; }
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)