<commit_before>using Skobbler.Additions;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Skobbler.Ngx.Search
{
    public partial class SKSearchManager
    {
        private readonly ISKSearchListener _searchListener;
        private readonly TaskCompletionSource<IList<SKSearchResult>> _taskCompletionSource;

        public SKSearchManager() : this(null)
        {
            _taskCompletionSource = new TaskCompletionSource<IList<SKSearchResult>>();
            _searchListener = new SKSearchListener(_taskCompletionSource);

            SetSearchListener(_searchListener);
        }

        public async Task<IList<SKSearchResult>> NearbySearchAsync(SKNearbySearchSettings nearbySearchObj)
        {
            SKSearchStatus searchStatus = NearbySearch(nearbySearchObj);

            if(searchStatus != SKSearchStatus.SkSearchNoError)
            {
                _taskCompletionSource.SetException(new Exception(searchStatus.ToString()));
            }

            return await _taskCompletionSource.Task;
        }
    }
}<commit_msg>Included MultistepSearchAsync() in SKSearchManager addition<commit_after>using Skobbler.Additions;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Skobbler.Ngx.Search
{
    public partial class SKSearchManager
    {
        private readonly ISKSearchListener _searchListener;
        private readonly TaskCompletionSource<IList<SKSearchResult>> _taskCompletionSource;

        public SKSearchManager() : this(null)
        {
            _taskCompletionSource = new TaskCompletionSource<IList<SKSearchResult>>();
            _searchListener = new SKSearchListener(_taskCompletionSource);

            SetSearchListener(_searchListener);
        }

        public async Task<IList<SKSearchResult>> NearbySearchAsync(SKNearbySearchSettings nearbySearchObj)
        {
            SKSearchStatus searchStatus = NearbySearch(nearbySearchObj);

            if(searchStatus != SKSearchStatus.SkSearchNoError)
            {
                _taskCompletionSource.SetException(new Exception(searchStatus.ToString()));
            }

            return await _taskCompletionSource.Task;
        }

        public async Task<IList<SKSearchResult>> MultistepSearchAsync(SKMultiStepSearchSettings stepObject)
        {
            MultistepSearch(stepObject);

            return await _taskCompletionSource.Task;
        }
    }
}
{'fraction_non_alphanumeric': 0.06833060556464812, 'fraction_numerical': 0.0, 'mean_word_length': 3.0818030050083474, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1779856', 'n_tokens_mistral': 607, 'n_tokens_neox': 589, 'n_words': 107}