@Override
          public void beforeValueReturn(@NotNull DfaValue value,
                                        @Nullable PsiExpression expression,
                                        @NotNull PsiElement context,
                                        @NotNull DfaMemoryState state) {
            if (context != method) return;
            String name = state.getDfType(methodName).getConstantOfType(String.class);
            if (name == null) {
              runner.cancel();
              return;
            }
            DfType type = state.getDfType(value);
            if (type instanceof DfPrimitiveType) {
              type = DfTypes.typedObject(((DfPrimitiveType)type).getPsiType().getBoxedType(body), Nullability.NOT_NULL);
            }
            returnMap.computeIfAbsent(name, k -> new HashMap<>()).merge(expression, type, DfType::join);
          }
@Override
          public void beforeValueReturn(@NotNull DfaValue value,
                                        @Nullable PsiExpression expression,
                                        @NotNull PsiElement context,
                                        @NotNull DfaMemoryState state)