code: func (f *Factory) Instantiate(ctx context.Context, id string) (FirewallSSOInt, error) {
  	firewall := FirewallSSO{}
  	firewall.PfconfigHashNS = id
  	_, err := pfconfigdriver.FetchDecodeSocketCache(ctx, &firewall)
  	if err != nil {
  		return nil, err
  	}
  	if oType, ok := f.typeRegistry[firewall.Type]; ok {
  		or := reflect.New(oType)
  		or.Elem().FieldByName("PfconfigHashNS").SetString(id)
  		firewall2 := or.Interface().(pfconfigdriver.PfconfigObject)
  		_, err = pfconfigdriver.FetchDecodeSocketCache(ctx, firewall2)
  		if err != nil {
  			return nil, err
  		}
  
  		fwint := firewall2.(FirewallSSOInt)
  
  		err = fwint.init(ctx)
  		if err != nil {
  			return nil, err
  		}
  
  		err = fwint.initChild(ctx)
  		if err != nil {
  			return nil, err
  		}
  
  		return fwint, nil
  	} else {
  		return nil, errors.New("Cannot find the type of the object")
  	}
  }
docs: // Instantiate a new FirewallSSO given its configuration ID in PacketFence