public AnswerCombination answer(Combination<Colors> attempt) {
    List<Token<AnswerColors>> answerTokens = new ArrayList<Token<AnswerColors>>();
    
    List<Colors> attemptColorList = attempt.getColorsList();
    List<Colors> targetColorList = target.getColorsList();
    
    //Black and white number calculation
    for (int i = 0; i < Combination.SIZE; i++) {
    	if (attemptColorList.get(i).name() == targetColorList.get(i).name()) {
    		answerTokens.add(new Token<AnswerColors>(AnswerColors.BLACK));
    		attemptColorList.set(i, null);
    		targetColorList.set(i, null);
    	}
    }
      
	for (int i = 0; i < Combination.SIZE; i++) {
		if (attemptColorList.get(i) != null) {
			for (int j = 0; j < targetColorList.size(); j++) {
				if (targetColorList.get(j) != null) {
					if (attemptColorList.get(i).name() == targetColorList.get(j).name()) {
						answerTokens.add(new Token<AnswerColors>(AnswerColors.WHITE));
						targetColorList.set(j, null);
					}
				}			
			}
		}
	}
    
    
    // Fill the answer token list with EMPTY tokens    
    while (answerTokens.size() < Combination.SIZE){
      answerTokens.add(new Token<AnswerColors>(AnswerColors.EMPTY));
    }
    
    // return statement
    return new AnswerCombination(answerTokens);
    
  }