code: func IsListType(obj runtime.Object) bool {
  	switch t := obj.(type) {
  	case runtime.Unstructured:
  		return t.IsList()
  	}
  	t := reflect.TypeOf(obj)
  
  	isListCache.lock.RLock()
  	ok, exists := isListCache.byType[t]
  	isListCache.lock.RUnlock()
  
  	if !exists {
  		_, err := getItemsPtr(obj)
  		ok = err == nil
  
  		// cache only the first 1024 types
  		isListCache.lock.Lock()
  		if len(isListCache.byType) < 1024 {
  			isListCache.byType[t] = ok
  		}
  		isListCache.lock.Unlock()
  	}
  
  	return ok
  }
docs: // IsListType returns true if the provided Object has a slice called Items.
  // TODO: Replace the code in this check with an interface comparison by
  //   creating and enforcing that lists implement a list accessor.