code: func ExtractList(obj runtime.Object) ([]runtime.Object, error) {
  	itemsPtr, err := GetItemsPtr(obj)
  	if err != nil {
  		return nil, err
  	}
  	items, err := conversion.EnforcePtr(itemsPtr)
  	if err != nil {
  		return nil, err
  	}
  	list := make([]runtime.Object, items.Len())
  	for i := range list {
  		raw := items.Index(i)
  		switch item := raw.Interface().(type) {
  		case runtime.Object:
  			list[i] = item
  		case runtime.RawExtension:
  			list[i] = &runtime.Unknown{
  				RawJSON: item.RawJSON,
  			}
  		default:
  			var found bool
  			if list[i], found = raw.Addr().Interface().(runtime.Object); !found {
  				return nil, fmt.Errorf("%v: item[%v]: Expected object, got %#v(%s)", obj, i, raw.Interface(), raw.Kind())
  			}
  		}
  	}
  	return list, nil
  }
docs: // ExtractList returns obj's Items element as an array of runtime.Objects.
  // Returns an error if obj is not a List type (does not have an Items member).