code: func (s *syntheticByteStream) Seek(offset int64, whence int) (int64, error) {
  	s.mu.Lock()
  	defer s.mu.Unlock()
  
  	switch whence {
  	case io.SeekStart:
  		s.offset = offset
  	case io.SeekCurrent:
  		s.offset += offset
  	case io.SeekEnd:
  		s.offset = s.size - offset
  	default:
  		return 0, errors.New("Seek: invalid whence")
  	}
  
  	if s.offset < 0 {
  		return 0, errors.New("Seek: invalid offset")
  	}
  
  	return s.offset, nil
  }
docs: // Seek implements the Seeker interface for syntheticByteStream