code: func NewMutableTLS(c *tls.Config) (*MutableTLSCreds, error) {
  	originalTC := credentials.NewTLS(c)
  
  	if len(c.Certificates) < 1 {
  		return nil, errors.New("invalid configuration: needs at least one certificate")
  	}
  
  	subject, err := GetAndValidateCertificateSubject(c.Certificates)
  	if err != nil {
  		return nil, err
  	}
  
  	tc := &MutableTLSCreds{config: c, tlsCreds: originalTC, subject: subject}
  	tc.config.NextProtos = alpnProtoStr
  
  	return tc, nil
  }
docs: // NewMutableTLS uses c to construct a mutable TransportCredentials based on TLS.