private LinkedList<LinkedList<Integer>> allSatRec(LinkedList<Integer> varOrdList) {
		if (terminal) {
			LinkedList<LinkedList<Integer>> emptyList = new LinkedList<LinkedList<Integer>>();
			if (value) {
				// If the node is the 1-terminal, a list containing an empty 
				// list is returned.
				emptyList.add(new LinkedList<Integer>());
			}
			// If the node is the 0-terminal, only an empty list is returned.
			return emptyList;
		}
		// returning the list stated in the computed table for this node
		// (if there is one)
		if (allSatCT.containsKey(id)) {
			return allSatCT.get(id);
		} else {
			// getting the position of the node's variable in the given variable list
			int varPos = varOrdList.indexOf(var);
			// initializing a list for all variables that were "missing" before the 
			// node's one
			LinkedList<Integer> missingVars = new LinkedList<Integer>();
			// moving all variables in the list before the node's one to the list 
			// of "missing" variables
			for (int i = 0; i < varPos; i++) {
				 missingVars.add(varOrdList.poll());
			}
			// creating the "power list" of the list of "missing" variables
			LinkedList<LinkedList<Integer>> missingVarsPL = powerList(missingVars);
			// removing this node's variable form the variable list
			varOrdList.poll();
			// getting all satisfying assignments for the node's high child
			LinkedList<LinkedList<Integer>> allSatList = 
					highChild.allSatRec(varOrdList);
			// initializing a variable for satisfying assignments for the node's 
			// high child
			LinkedList<Integer> satHC;
			// for each satisfying assignment of the node's high child, adding the 
			// node's variable to the beginning of the list
			for (int i = 0; i < allSatList.size(); i++) {
				satHC = allSatList.get(i);
				satHC.addFirst(var);
				allSatList.set(i, satHC);
			}
			// getting all satisfying assignments for the node's low child
			allSatList.addAll(lowChild.allSatRec(varOrdList));
			// initializing an empty list for all satisfying assignments including 
			// the "missing" variables" 
			LinkedList<LinkedList<Integer>> allSatWithMissing = 
					new LinkedList<LinkedList<Integer>>();
			// initializing a variable for the individual satisfying assignments 
			// with "missing" variables
			LinkedList<Integer> satWithMissing;
			// for each list of "missing" variables and each satisfying assignment 
			// so far, adding each possible combination of elements of the two sets 
			// to the list of satisfying assignments with "missing" variables
			for (LinkedList<Integer> mVList : missingVarsPL) {
				for (LinkedList<Integer> satList : allSatList) {
					// setting the new assignment to the current list of "missing" 
					// variables
					satWithMissing = mVList;
					// adding the current satisfying assignment
					satWithMissing.addAll(satList);
					// adding the "complete" assignment to the list
					allSatWithMissing.add(satWithMissing);
				}
			}
			// putting all satisfying assignments including "missing" variables 
			// for this node into the computed table
			allSatCT.put(id, allSatWithMissing);
			// returning the assignments
			return allSatWithMissing;
		}
	}