private void constructAbstractGraph(AbstractGraph graph, FiniteStateAutomaton dfa,
													ArrayList<HashSet> setOfScc){
		
		/** construct an abstract node for each SCC starting from the initial state of 
		 * the dfa*/
		for(HashSet<State> scc : setOfScc){
			StatePlacer sp = new StatePlacer();
			AGState node = graph.createState(sp.getPointForState(graph));
			if (hasInitiaState(scc,dfa)){
				graph.setInitialState(node);
			}
			SCCofAGstates.put(node, scc);
			AGStateOfSCC.put(scc,node);
		}
		
		/** constructs the edge of the AbstractGraph starting
		 *  fron the initial state of the graph  */
				
		for (HashSet<State> scc : setOfScc){
			
			AGState currentAGState = (AGState) AGStateOfSCC.get(scc);
			
			for (State currentState : scc){
				
				currentAGState.setAlphabet(getAlphabetOfSCC(scc));
				FSATransition[] transitionFromAGState = getTransitionFromSCC(scc);
				for(FSATransition t : transitionFromAGState){
					
					AGState ToAGState = (AGState) AGStateOfSCC.get(SCCofState.get(t.getToState()));
					Transition transition = new FSATransition(currentAGState,ToAGState, t.getLabel());
					graph.addTransition(transition);
					
					}
				
						
				}
			}
		
		
		}