private void runThroughNet(LinkedList<SimNodePair> q) {
if (!(q.isEmpty())) {
SimNodePair np = q.removeFirst();
Iterator<SimArc> a =np.getFirst().getarcOut().iterator();
while(a.hasNext()){
SimArc aa = a.next();
SimNode m = aa.getTarget();
if (!m.isJoinReached()) {
double val = aa.getProbability() * np.getSecond().getTempRuns();
if (!(val < epsilon)) {
SimNode y = new SimNode(m.getid(), m.getname());
y.settype(m.gettype());
y.setTempRuns(val);
m.incIteration();
y.setIteration(m.getIteration());
if (m.isAndJoin())
m.setJoinReached(true);
np.getSecond().getarcOut().add(new SimArc(np.getSecond(), y, aa.getProbability()));
Key k = new Key(m.getid(), val);
unfoldedNet.put(k, y);
if (!(containsElement(q, m)))
q.addLast(new SimNodePair(m, y));