code: func (dr *DescribeRequest) flatRules() []*DescribeRule {
  	if dr.flatRuleCache == nil {
  		dr.flatRuleCache = make([]*DescribeRule, 0)
  		for _, rule := range dr.Rules {
  			rule.appendToFlatCache(dr)
  		}
  	}
  	return dr.flatRuleCache
  }
docs: // Requires dr.mu is held