pub async fn detect_version_from_environment<'l, T>(
    tool: &Box<T, Global>,
    forced_version: Option<String>
) -> impl Future<Output = Result<String, ProtoError>>where
    T: Tool<'l> + ?Sized,