private void Process_BeginsWithSymbol(Boolean[][] beginsDirectlyWithSymbol){
		// First set all pairs equal to the ones from 'beginsDirectlyWithSymbol'.
		for (int i = 0; i < mSymbolsEx.size(); ++i){
			for (int j = 0; j < mSymbolsEx.size(); ++j){ // for each pair of symbols
				if (i != j) mBeginsWithSymbol[i][j] = beginsDirectlyWithSymbol[i][j];
				else mBeginsWithSymbol[i][j] = true; // it is a reflective relation
			}
		}
		// Now update transitive relations
		Boolean goAgain = true;
		while (goAgain){
			goAgain = false;
			// first we pick a column in the table (page 101)
			for (int i = 0; i < mSymbolsEx.size(); ++i){
				// now we pick a relation ->  r(j, i)
				for (int j = 0; j < mSymbolsEx.size(); ++j){
					if (mBeginsWithSymbol[j][i]){
						// now find this relation -> r(k, j)
						for (int k = 0; k < mSymbolsEx.size(); ++k){
							if (mBeginsWithSymbol[k][j] && mBeginsWithSymbol[k][i] == false){
								mBeginsWithSymbol[k][i] = true; // update transition
								goAgain = true;
							}
						}
					}
				}
			}
		}
	}