code: func SecurityConstructor(sec interface{}) (SecC, error) {
  	// Already constructed?
  	if t, ok := sec.(security.Transport); ok {
  		return func(_ host.Host) (security.Transport, error) {
  			return t, nil
  		}, nil
  	}
  
  	ctor, err := makeConstructor(sec, securityType, securityArgTypes)
  	if err != nil {
  		return nil, err
  	}
  	return func(h host.Host) (security.Transport, error) {
  		t, err := ctor(h, nil)
  		if err != nil {
  			return nil, err
  		}
  		return t.(security.Transport), nil
  	}, nil
  }
docs: // SecurityConstructor creates a security constructor from the passed parameter
  // using reflection.