/**
   * Diese Methode überprüft ob ein Dependency Loop existiert.
   *
   * <p>Dafür wird die Abhängigkeitskette einer Frage Rekursiv durchgegangen und die Fragen jeweils
   * einem Set hinzugefügt.
   *
   * <p>Kommt eine Frage zwei mal vor, dann existiert ein Loop.
   *
   * @param question Die nächste zu überprüfende Frage
   * @param previousQuestions Ein Set mit allen Bisher überprüften Fragen
   * @return true fals ein Loop entsteht, false falls kein Loop entsteht
   */
  private boolean hasDependencyLoop(Question question, HashSet<Question> previousQuestions) {
    if (previousQuestions.contains(question)) {
      return true;
    }
    previousQuestions.add(question);

    final Answer answer = question.getDependsOn();
    if (answer == null) {
      return false;
    } else {
      Question nextQuestion = answer.getAnswerOf();
      if (nextQuestion == null) {
        final Answer fetchedAnswer = answerManager.get(answer.getId());
        nextQuestion = fetchedAnswer.getAnswerOf();
      }
      return hasDependencyLoop(nextQuestion, previousQuestions);
    }
  }