public static IVisiblyDisposable CreateCenteredSpiral <TInterest>( IInterestMap <Index3D, TInterest> map, TInterest interest, IObservable <Index3D> origin, IBoundedIndexable <Index3D, bool> shape) { Contracts.Requires.That(map != null); Contracts.Requires.That(origin != null); Contracts.Requires.That(shape != null); return(new AreaOfInterest3D <TInterest>( map, interest, origin, Keys.CreateCenteredSpiral(shape))); }