DfType (DfaCallArguments arguments, DfaMemoryState state, PsiMethod method) { DfaValue[] myArguments = arguments.myArguments; if (myArguments.length != 1 || myArguments[0] == null) { return DfType.TOP; } DfType myArgument = state.getDfType(myArguments[0]); PsiEnumConstant enumConstant = myArgument.getConstantOfType(PsiEnumConstant.class); if (enumConstant == null) { return DfType.TOP; } PsiType enumType = enumConstant.getType(); if (!enumType.equalsToText("java.time.temporal.ChronoField")) { return DfType.TOP; } PsiClass containingClass = method.getContainingClass(); if (containingClass == null) { return DfType.TOP; } ChronoField myChronoField = ChronoUtil.getChronoField(enumConstant.getName()); if (myChronoField == null || !ChronoUtil.isAnyGetSupported(method, myChronoField)) { return DfType.TOP; } LongRangeSet range = LongRangeSet.range(myChronoField.range().getMinimum(), myChronoField.range().getMaximum()); String methodName = method.getName(); if ("get".equals(methodName)) { return intRange(range); } else if ("getLong".equals(methodName)) { return longRange(range); } else { return DfType.TOP; } }