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