private MethodNode chooseMethodRefMethodCandidate(Expression methodRef, List<MethodNode> candidates) {
        if (1 == candidates.size()) return candidates.get(0);

        return candidates.stream()
                .map(e -> Tuple.tuple(e, matchingScore(e, methodRef)))
                .min((t1, t2) -> Integer.compare(t2.getV2(), t1.getV2()))
                .map(Tuple2::getV1)
                .orElse(null);
    }
private MethodNode chooseMethodRefMethodCandidate ( Expression methodRef , List < MethodNode > candidates ) { if ( 1 == candidates . size ( ) ) return candidates . get ( 0 ) ; return candidates . stream ( ) . map ( e -> Tuple . tuple ( e , matchingScore ( e , methodRef ) ) ) . min ( ( t1 , t2 ) -> Integer . compare ( t2 . getV2 ( ) , t1 . getV2 ( ) ) ) . map ( Tuple2 :: getV1 ) . orElse ( null ) ; }
Choose the best method node for method reference.