List<FunctionalExpressionKey> () { String name = samClass.isValid() ? samClass.getName() : null; if (name == null) return Collections.emptyList(); List<FunctionalExpressionKey> result = new ArrayList<>(); for (String lambdaType : new String[]{Objects.requireNonNull(name), ""}) { for (int lambdaParamCount : new int[]{FunctionalExpressionKey.UNKNOWN_PARAM_COUNT, samParamCount}) { result.add(new FunctionalExpressionKey(lambdaParamCount, FunctionalExpressionKey.CoarseType.UNKNOWN, lambdaType)); if (isVoid) { result.add(new FunctionalExpressionKey(lambdaParamCount, FunctionalExpressionKey.CoarseType.VOID, lambdaType)); } else { if (booleanCompatible) { result.add(new FunctionalExpressionKey(lambdaParamCount, FunctionalExpressionKey.CoarseType.BOOLEAN, lambdaType)); } result.add(new FunctionalExpressionKey(lambdaParamCount, FunctionalExpressionKey.CoarseType.NON_VOID, lambdaType)); } } } return result; }