code: func NewSessionAC(chain ConfigSequencer, env *common.Envelope, policyChecker PolicyChecker, channelID string, expiresAt ExpiresAtFunc) (*SessionAccessControl, error) {
  	signedData, err := env.AsSignedData()
  	if err != nil {
  		return nil, err
  	}
  
  	return &SessionAccessControl{
  		envelope:       env,
  		channelID:      channelID,
  		sequencer:      chain,
  		policyChecker:  policyChecker,
  		sessionEndTime: expiresAt(signedData[0].Identity),
  	}, nil
  }
docs: // NewSessionAC creates an instance of SessionAccessControl. This constructor will
  // return an error if a signature header cannot be extracted from the envelope.