func (f *finder) at(ctx context.Context, at uint64, e *epoch, ch swarm.Chunk) (swarm.Chunk, error) {
	uch, err := f.getter.Get(ctx, e)
	if err != nil {
		// error retrieving
		if !errors.Is(err, storage.ErrNotFound) {
			return nil, err
		}
		// epoch not found on branch
		if e.isLeft() { // no lower resolution
			return ch, nil
		}
		// traverse earlier branch
		return f.at(ctx, e.start-1, e.left(), ch)
	}
	// epoch found
	// check if timestamp is later then target
	ts, err := feeds.UpdatedAt(uch)
	if err != nil {
		return nil, err
	}
	if ts > at {
		if e.isLeft() {
			return ch, nil
		}
		return f.at(ctx, e.start-1, e.left(), ch)
	}
	if e.level == 0 { // matching update time or finest resolution
		return uch, nil
	}
	// continue traversing based on at
	return f.at(ctx, at, e.childAt(at), uch)
}
// at is a non-concurrent recursive Finder function to find the version update chunk at time `at`
at is a non-concurrent recursive Finder function to find the version update chunk at time `at`
// at is a non - concurrent recursive Finder function to find the version update chunk at time ` at `
func (f *finder) at(ctx context.Context, at uint64, e *epoch, ch swarm.Chunk) (swarm.Chunk, error) {
	uch, err := f.getter.Get(ctx, e)
	if err != nil {
		if !errors.Is(err, storage.ErrNotFound) {
			return nil, err
		}
		if e.isLeft() { 
			return ch, nil
		}
		return f.at(ctx, e.start-1, e.left(), ch)
	}
	ts, err := feeds.UpdatedAt(uch)
	if err != nil {
		return nil, err
	}
	if ts > at {
		if e.isLeft() {
			return ch, nil
		}
		return f.at(ctx, e.start-1, e.left(), ch)
	}
	if e.level == 0 { 
		return uch, nil
	}
	return f.at(ctx, at, e.childAt(at), uch)
}
func ( f * finder ) at ( ctx context . Context , at uint64 , e * epoch , ch swarm . Chunk ) ( swarm . Chunk , error ) { uch , err := f . getter . Get ( ctx , e ) if err != nil { if ! errors . Is ( err , storage . ErrNotFound ) { return nil , err } if e . isLeft ( ) { return ch , nil } return f . at ( ctx , e . start - 1 , e . left ( ) , ch ) } ts , err := feeds . UpdatedAt ( uch ) if err != nil { return nil , err } if ts > at { if e . isLeft ( ) { return ch , nil } return f . at ( ctx , e . start - 1 , e . left ( ) , ch ) } if e . level == 0 { return uch , nil } return f . at ( ctx , at , e . childAt ( at ) , uch ) }
at is a non-concurrent recursive Finder function to find the version update chunk at time `at`
at is a non - concurrent recursive Finder function to find the version update chunk at time ` at `
// error retrieving // epoch not found on branch // no lower resolution // traverse earlier branch // epoch found // check if timestamp is later then target // matching update time or finest resolution // continue traversing based on at