void (CFGBuilder builder, Step firstStep, PsiExpression collectionExpression) { PsiType elementType = PsiUtil.substituteTypeParameter(collectionExpression.getType(), JAVA_UTIL_COLLECTION, 0, false); if (collectionExpression instanceof PsiMethodCallExpression call && COLLECTION_SOURCE.matches(call)) { PsiExpression[] args = call.getArgumentList().getExpressions(); if (args.length == 1 && !MethodCallUtils.isVarArgCall(call)) { startStreamFromContainer(builder, firstStep, args[0], SpecialField.ARRAY_LENGTH, elementType); } else { builder .chain(firstStep::before) .loopOver(args, builder.createTempVariable(elementType), elementType) .chain(firstStep::iteration).end(); } } else { startStreamFromContainer(builder, firstStep, collectionExpression, SpecialField.COLLECTION_SIZE, elementType); } }