code: protected CandidateCompareResult compareByArgumentTypes(AbstractPendingLinkingCandidate<?> other, int leftBoxing, int rightBoxing, int leftDemand, int rightDemand) {
  		if (leftDemand != rightDemand) {
  			if (leftDemand < rightDemand)
  				return CandidateCompareResult.THIS;
  			return CandidateCompareResult.OTHER;
  		}
  		return compareByBoxing(leftBoxing, rightBoxing);
  	}
docs: Compare this linking candidate with the given {@code other} candidate at {@code argumentIndex}
  
  Returns {@code CandidateCompareResult#THIS} if this candidate is better, {@code CandidateCompareResult#OTHER} if the
  right candidate was better, {@code CandidateCompareResult#AMBIGUOUS} if both candidates are valid
  but ambiguous or {@code CandidateCompareResult#EQUALLY_INVALID} if both candidates are
  ambiguous but erroneous.
  
  @param other the other candidate (the rhs of the comparison)
  @param leftBoxing the number of required boxing conversions if this candidate was chosen
  @param rightBoxing the number of required boxing conversions if the other candidate was chosen
  @param leftDemand the number of required demand conversions if this candidate was chosen
  @param rightDemand the number of required demand conversions if the other candidate was chosen