def METHOD_NAME(
    encrypted, device_sizes, *, fs_sizes=None, overprovision=True
):
    """
    Call stratis-predict-usage and return JSON result.
    :param bool encrypted: true if pool is to be encrypted
    :param device_sizes: list of sizes of devices for pool
    :type device_sizes: list of str
    :param fs_sizes: list of filesystem sizes
    :type fs_sizes: list of Range
    :param bool overprovision: whether it is allowed to overprovision the pool
    """
    with subprocess.Popen(
        [_STRATIS_PREDICT_USAGE, "pool"]
        + [f"--device-size={size.magnitude}" for size in device_sizes]
        + (
            []
            if fs_sizes is None
            else [(f"--filesystem-size={size.magnitude}") for size in fs_sizes]
        )
        + (["--encrypted"] if encrypted else [])
        + ([] if overprovision else ["--no-overprovision"]),
        stdout=subprocess.PIPE,
    ) as command:
        outs, errs = command.communicate()
        if command.returncode != 0:
            raise RuntimeError(
                f"Invocation of {_STRATIS_PREDICT_USAGE} returned an error: "
                f"{command.returncode,}, {errs}"
            )
        prediction = json.loads(outs)
    return prediction