private Automata<String> createAutomataFromTable() {
		
		Automata<String> guessedAutomata = new Automata<String>(bottomOfTableRow.get(bottomOfTableRow.size() - 1).length(), 1, alphabet);
		
		for ( String rowState : topOfTableRow ) {
			
			//if (rowState.equals("-1")) continue;
			
			for ( String columnExperiment : columns ) {
				
				guessedAutomata = computeValidAutomata(rowState, columnExperiment, guessedAutomata);
				
			}
			
		}
		
		for ( String rowState : bottomOfTableRow ) {
			
			//if (rowState.equals("-1")) continue;
			
			for ( String columnExperiment : columns ) {
				
				guessedAutomata = computeValidAutomata(rowState, columnExperiment, guessedAutomata);
				
			}
			
		}
		
		// This fills those transitions which have not been filled in by the 'correct'
		// transitions from the table with the last state, as seems to be the pattern.
		// Again, crude, needs formalising.
        int[][] transitions = guessedAutomata.getTransitions();
		
		for ( int i = 0; i < transitions.length; i++ ) {
			
			for ( int j = 1; j < alphabet.size(); j++ ) {
				
				if ( transitions[i][j] == 0) {
					
					guessedAutomata.transition(i, j, guessedAutomata.getMaxStates());
					
				}
				
			}
			
		}
		
		System.out.println("");
		System.out.println(guessedAutomata);
		
		return guessedAutomata;
		
	}