code: func (p *Policy) Queryable(c context.Context) (Queryable, error) {
  	val, err := p.cache.Get(c, func(prev interface{}) (newQ interface{}, exp time.Duration, err error) {
  		prevQ, _ := prev.(Queryable)
  		newQ, err = p.grabQueryable(c, prevQ)
  		if err == nil {
  			exp = cacheExpiry(c)
  		}
  		return
  	})
  	if err != nil {
  		return nil, err
  	}
  	return val.(Queryable), nil
  }
docs: // Queryable returns a form of the policy document optimized for queries.
  //
  // This is hot function called from each RPC handler. It uses local in-memory
  // cache to store the configs, synchronizing it with the state stored in the
  // datastore once a minute.
  //
  // Returns ErrNoPolicy if the policy config wasn't imported yet.