code: func getCollectionConfigFromBytes(cconfBytes []byte) ([]byte, error) {
  	cconf := &[]collectionConfigJson{}
  	err := json.Unmarshal(cconfBytes, cconf)
  	if err != nil {
  		return nil, errors.Wrap(err, "could not parse the collection configuration")
  	}
  
  	ccarray := make([]*pcommon.CollectionConfig, 0, len(*cconf))
  	for _, cconfitem := range *cconf {
  		p, err := cauthdsl.FromString(cconfitem.Policy)
  		if err != nil {
  			return nil, errors.WithMessage(err, fmt.Sprintf("invalid policy %s", cconfitem.Policy))
  		}
  
  		cpc := &pcommon.CollectionPolicyConfig{
  			Payload: &pcommon.CollectionPolicyConfig_SignaturePolicy{
  				SignaturePolicy: p,
  			},
  		}
  
  		cc := &pcommon.CollectionConfig{
  			Payload: &pcommon.CollectionConfig_StaticCollectionConfig{
  				StaticCollectionConfig: &pcommon.StaticCollectionConfig{
  					Name:              cconfitem.Name,
  					MemberOrgsPolicy:  cpc,
  					RequiredPeerCount: cconfitem.RequiredCount,
  					MaximumPeerCount:  cconfitem.MaxPeerCount,
  					BlockToLive:       cconfitem.BlockToLive,
  					MemberOnlyRead:    cconfitem.MemberOnlyRead,
  				},
  			},
  		}
  
  		ccarray = append(ccarray, cc)
  	}
  
  	ccp := &pcommon.CollectionConfigPackage{Config: ccarray}
  	return proto.Marshal(ccp)
  }
docs: // getCollectionConfig retrieves the collection configuration
  // from the supplied byte array; the byte array must contain a
  // json-formatted array of collectionConfigJson elements