public async Task <IScatteredPointsLinearInterpolatorOnSphere> CreateAsync()
        {
            var cachingDecorator = await contextProvidingFactory.CreateAsync();

            var adapter = new CellRequestToPointsAdapter <TContext>(weightsProvider);
            var facade  = new TwoPhaseScatteredPointsLenearInterpolatorFacade <TContext>(cachingDecorator, adapter);

            return(facade);
        }
 public CachingLinearWeightsProviderFactory2(IScatteredPointContextBasedLinearWeightProviderOnSphere <TContext> weightsProvider, IAsyncMap <INodes, TContext> contextProvider)
 {
     result = new AsyncLazy <IScatteredPointsLinearInterpolatorOnSphere>(async() =>
     {
         var contextProvidingFactory = new AsyncMapCacheDecoratingFactory <INodes, TContext>(new HashBasedEquatibleINodesConverter(), contextProvider);
         var cachingDecorator        = await contextProvidingFactory.CreateAsync();
         var adapter = new CellRequestToPointsAdapter <TContext>(weightsProvider);
         var facade  = new TwoPhaseScatteredPointsLenearInterpolatorFacade <TContext>(cachingDecorator, adapter);
         return(facade);
     });
 }