public void generateWeakTransitionForState(State start, State current,
			Boolean UsedStrong, Action StrongAction,
			HashSet<State> alreadyVisited) {

		if (start == null) {
			throw new NullPointerException("start == null");
		}

		alreadyVisited.add(current);

		for (Transition i : this.getOutgoingTransitions(current)) { // iteriere
																	// über
																	// ausgehende
																	// transitionen
			State transTarget = i.getTarState(); // ziel der aktuellen
													// transition

			/* Jeder zustand kann sich selbst aber schwach erreichen! */

			if (i.isIntern()) { // man kommt zu dem Folgezustand über eine
								// schwache Aktion (Transition? Es gibt keine
								// schwachen Aktionen)
				if (UsedStrong) { // falls schon starke genutzt

					Transition newTrans = new Transition(start, transTarget,
							StrongAction);
					this.addToWeakTrans(newTrans);
					HashSet<State> newAlreadyVisited = new HashSet<State>(
							alreadyVisited); // neues HashSet falls Backtracking
					if (!alreadyVisited.contains(transTarget)) { // gegen zykel
						this.generateWeakTransitionForState(start, transTarget,
								UsedStrong, StrongAction, newAlreadyVisited);
					}
				} else if (!UsedStrong) { // falls noch keien starke genutzt
					// erzeuge neue transition vom start zustand zum
					// folgenden
					Transition newTrans = new Transition(start, transTarget,
							i.getTransAction());
					this.addToWeakTrans(newTrans);
					HashSet<State> newAlreadyVisited = new HashSet<State>(
							alreadyVisited);
					if (!alreadyVisited.contains(transTarget)) {
						this.generateWeakTransitionForState(start, transTarget,
								UsedStrong, StrongAction, newAlreadyVisited);
					}
				}
			} else { // starke Transition
				if (!UsedStrong) { // nur falls noch keine starke genutzt
									// wurde
					// erzeuge neue transition vom start zustand zum
					// folgenden
					Transition newTrans = new Transition(start, transTarget,
							i.getTransAction());
					this.addToWeakTrans(newTrans);
					HashSet<State> newAlreadyVisited = new HashSet<State>(
							alreadyVisited);
					if (!alreadyVisited.contains(transTarget)) {
						this.generateWeakTransitionForState(start, transTarget,
								true, i.getTransAction(), newAlreadyVisited);
					}
				}

			}
		}

	}