public abstract SearchResult Search(SearchMessage msg);
 public virtual Task <SearchResult> SearchAsync(SearchMessage msg) => Task.FromResult(Search(msg));