void (DfaValueFactory factory, DfaMemoryState state, DfaCallArguments arguments, boolean list) { DfaVariableValue size = tryCast(COLLECTION_SIZE.createValue(factory, arguments.myQualifier), DfaVariableValue.class); if (size != null) { DfIntType sizeType = tryCast(state.getDfType(size), DfIntType.class); DfType resultSize = COLLECTION_SIZE.getDefaultValue(); if (sizeType != null) { resultSize = sizeType.eval(DfTypes.intValue(1), LongRangeBinOp.PLUS).meet(DfTypes.intRange(JvmPsiRangeSetUtil.indexRange())); if (!list) { resultSize = resultSize.join(sizeType.meet(DfTypes.intRange(LongRangeSet.range(1, Integer.MAX_VALUE)))); } if (resultSize == DfType.BOTTOM) { // Possible int overflow resultSize = COLLECTION_SIZE.getDefaultValue(); } } updateState(state, size, resultSize); } }