* @return
*/
private static Type construct(byte kind, Object data, Collection<Type> children) {
int[] nchildren = new int[children.size()];
boolean deterministic = kind != K_UNION;
Automaton automaton = new Automaton(new State(kind, data, deterministic, nchildren));
int start = 1;
int i=0;
for(Type element : children) {
nchildren[i] = start;
Automaton child = destruct(element);