private void createAllSpecifiedEquivalences() {
		
		Set<GVertex> hVertices = h.vertexSet();
		Map<String,GVertex> hVertexMap = new HashMap<String,GVertex>();
		for(GVertex hVertex : hVertices) {
			hVertexMap.put(hVertex.getName(),hVertex);
		}
		
		Set<GVertex> gVertices = g.vertexSet();
		Map<String,GVertex> gVertexMap = new HashMap<String,GVertex>();
		for(GVertex gVertex : gVertices) {
			gVertexMap.put(gVertex.getName(),gVertex);
		}

		// start pqueue with all valid initial configurations for a chosen ab'
		GEdge aEdge = g.edgeSet().iterator().next();
		String intVertexName = g.getEdgeTarget(aEdge).getName();
		GVertex intVertexInH = hVertexMap.get(intVertexName);
		Set<GEdge> outIntEdges = h.outgoingEdgesOf(intVertexInH);
		GEdge bPrimeEdge = outIntEdges.iterator().next();
		EdgePair aBPrimePair = new EdgePair(aEdge,bPrimeEdge);

		Set<EdgePair> initialPossibilities = getAllPossibleEdgePairs(aBPrimePair, gVertexMap, hVertexMap);	

		for(EdgePair bAprimePair : initialPossibilities) {
			EquivEntry ee = new EquivEntry(aEdge,bAprimePair.getFirst(),bAprimePair.getSecond(),bPrimeEdge);
			SpecHelper sh = new SpecHelper(ee);
			specHelperPQueue.add(sh);
		}

		// iterate through the pqueue, if it's a full equiv entry, convert it to a SE and put it in the list, otherwise
		// generate all the new spec helpers.
		while(!specHelperPQueue.isEmpty()) {
			SpecHelper currentSpecHelper = specHelperPQueue.remove();
			
			logger.info("currentSpecHelper size is " + currentSpecHelper.getLength());
			logger.info("currentSpecHelper's seenABPrime size is " + currentSpecHelper.getSeenABPrimeSize());
			logger.info("currentSpecHelper's seenBAPrime size is " + currentSpecHelper.getSeenBAPrimeSize());
			currentSpecHelper.printHelper();
			
			if(currentSpecHelper.getLength() == gh.edgeSet().size()) {
				logger.info("Our current spec helper is of length " +
							currentSpecHelper.getLength() + 
							" so it will be transformed into a SE and added to the list");
				SpecifiedEquivalence se = new SpecifiedEquivalence(currentSpecHelper,g,h);
				specEquivList.add(se);
			}
			else{
				EdgePair nextEP = currentSpecHelper.nextEP(g,h,hVertexMap);
				if(nextEP != null) {
					logger.info("Found a non-null EP, getting possible associations");
					Set<EdgePair> nextPairs = getAllPossibleEdgePairs(nextEP,gVertexMap,hVertexMap);
					for(EdgePair np : nextPairs) {
						logger.info("Checking edge pair with b = " +
								np.getFirst().getName() + 
								" and aPrime = " + np.getSecond().getName());
						if(!currentSpecHelper.hasSeenBAprimePair(np)) {
							SpecHelper newSpecHelper = new SpecHelper(currentSpecHelper);
							EquivEntry createdEquivEntry = new EquivEntry(nextEP.getFirst(),np.getFirst(),np.getSecond(),nextEP.getSecond());
							newSpecHelper.addEquivEntry(createdEquivEntry);
							specHelperPQueue.add(newSpecHelper);
						}
					}
				} else {
					logger.error("We ran out of edge pairs. This shouldn't happen");
				}
			}
		}

	}