Operation (ChainVariable outVar, PsiMethodCallExpression call, boolean supportUnknownSources) { PsiMethod method = call.resolveMethod(); if(method == null) return null; PsiClass aClass = method.getContainingClass(); if(aClass == null) return null; PsiExpression[] args = call.getArgumentList().getExpressions(); String name = method.getName(); String className = aClass.getQualifiedName(); if(className == null) return null; PsiType callType = call.getType(); if(callType == null) return null; if(InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_UTIL_STREAM_BASE_STREAM) && !method.getModifierList().hasExplicitModifier(PsiModifier.STATIC)) { PsiExpression qualifier = call.getMethodExpression().getQualifierExpression(); if(qualifier != null) { PsiType elementType = StreamApiUtil.getStreamElementType(qualifier.getType()); if (!isValidElementType(elementType, call, false)) return null; Operation op = Operation.createIntermediate(name, args, outVar, elementType, supportUnknownSources); if (op != null) return op; op = TerminalOperation.createTerminal(name, args, elementType, callType, ExpressionUtils.isVoidContext(call)); if (op != null) return op; } return null; } return SourceOperation.createSource(call, supportUnknownSources); }