public static @Nullable Map<String, List<PyRequirement>> findSetupPyExtrasRequire(@NotNull Module module) {
    final PyCallExpression setupCall = findSetupCall(module);
    if (setupCall == null) return null;

    final PyDictLiteralExpression extrasRequire =
      PyUtil.as(resolveValue(setupCall.getKeywordArgument("extras_require")), PyDictLiteralExpression.class);
    if (extrasRequire == null) return null;

    final Map<String, List<PyRequirement>> result = new HashMap<>();

    for (PyKeyValueExpression extraRequires : extrasRequire.getElements()) {
      final Pair<String, List<PyRequirement>> extraResult = getExtraRequires(extraRequires.getKey(), extraRequires.getValue());
      if (extraResult != null) {
        result.put(extraResult.first, extraResult.second);
      }
    }

    return result;
  }
public static @Nullable Map<String, List<PyRequirement>> findSetupPyExtrasRequire(@NotNull Module module)