private static void getAllPermutations(List<String[]> permutations, List<Specie> specieList, int nrOfVariables) {
		Integer[] possible = new Integer[nrOfVariables];
		Integer nrOfSpecies = specieList.size();
		Integer index = 0;
		Integer currentElement = 0;
		
		possible[index] = initialize(index);
		
		while (index >= 0) {
			currentElement = possible[index];
			
			boolean foundNextElement = false;
			IntegerWrapper nextElement = new IntegerWrapper();
			
			while ((isNextElement(currentElement, nrOfSpecies, nextElement)) && (foundNextElement == false)) {
				currentElement = nextElement.getValue();
				
				if (isContinueCondition(possible, index, currentElement)) {
					foundNextElement = true;
				}
			}
			
			if (foundNextElement) {
				possible[index] = currentElement;
				
				if (isSolution(possible, index, nrOfVariables)) {
					String[] newPermutation = getPermutationFromArray(possible, specieList, nrOfVariables);
					
					permutations.add(newPermutation);
				} else {
					index++;
					
					possible[index] = initialize(index);
				}
			} else {
				index--;
			}
		}
		
	}