List<Equation> (Member method, Type[] argumentTypes, boolean isReferenceResult, boolean isInterestingResult, boolean stable) { // 4 = @NotNull parameter, @Nullable parameter, null -> ..., !null -> ... List<Equation> result = new ArrayList<>(argumentTypes.length * 4 + 2); if (isReferenceResult) { result.add(new Equation(new EKey(method, Out, stable), Value.Top)); result.add(new Equation(new EKey(method, NullableOut, stable), Value.Bot)); } for (int i = 0; i < argumentTypes.length; i++) { if (ASMUtils.isReferenceType(argumentTypes[i])) { result.add(new Equation(new EKey(method, new In(i, false), stable), Value.Top)); result.add(new Equation(new EKey(method, new In(i, true), stable), Value.Top)); if (isInterestingResult) { result.add(new Equation(new EKey(method, new InOut(i, Value.Null), stable), Value.Top)); result.add(new Equation(new EKey(method, new InOut(i, Value.NotNull), stable), Value.Top)); } } } return result; }