public Answer giveAnswer(Combination<Colors> attempt) {
    AnswerCombination answerCombination;
    boolean additionalAttemptPossible;
    boolean targetFound;
    
    if (this.board.additionalAttemptPossible) {
      
      if (!this.targetFound) {
        //1. Generate the answer combination.
        answerCombination = master.answer(attempt);   
      
        // 2. Put new row onto the board.
        additionalAttemptPossible = board.setGridLine(attempt, answerCombination);
        attemptsCount++;
        //3. Tell whether the target has been found.
        targetFound = master.correctCombination(answerCombination);
        if (targetFound) {
          this.targetFound = true;
          System.out.print("Target found ! With "+ board.grid.size() + " attempts. " +
              "The target was : ");
          board.getLastAttempt().print();   
        }
        
        //4. Tell whether there are other attempts possible.
        else if (!additionalAttemptPossible) {
          attemptsCount = -1;
          System.out.println("Too bad ! You have had enough attempts, and you could not find it. Maybe next time...");
          System.out.print("By the way, the target was : ");
          master.target.print();
          
        }
        

        return new Answer(answerCombination, additionalAttemptPossible, targetFound, attemptsCount);
      }
      
      else {
        System.out.println("No need to try more, you already found the target!");
        return new Answer(null, true, true, attemptsCount);
      }
    }
    
    else {
      if (this.targetFound) {
        System.out.println("No need to try more, you already found the target! Furthermore, you didn't have any additional attempt left...");
        return new Answer(null, false, true, attemptsCount);
      }
      else {
        System.out.println("Sorry but you already have had your chance. It is too late now.");
        return new Answer(null, false, false, -1);
      }
    }
  }