@Override
 public boolean equals(Object obj) {
   if (this == obj) return true;
   if (obj == null) return false;
   if (getClass() != obj.getClass()) return false;
   OpenSecureChannelRequest other = (OpenSecureChannelRequest) obj;
   if (RequestHeader == null) {
     if (other.RequestHeader != null) return false;
   } else if (!RequestHeader.equals(other.RequestHeader)) return false;
   if (ClientProtocolVersion == null) {
     if (other.ClientProtocolVersion != null) return false;
   } else if (!ClientProtocolVersion.equals(other.ClientProtocolVersion)) return false;
   if (RequestType == null) {
     if (other.RequestType != null) return false;
   } else if (!RequestType.equals(other.RequestType)) return false;
   if (SecurityMode == null) {
     if (other.SecurityMode != null) return false;
   } else if (!SecurityMode.equals(other.SecurityMode)) return false;
   if (ClientNonce == null) {
     if (other.ClientNonce != null) return false;
   } else if (!ClientNonce.equals(other.ClientNonce)) return false;
   if (RequestedLifetime == null) {
     if (other.RequestedLifetime != null) return false;
   } else if (!RequestedLifetime.equals(other.RequestedLifetime)) return false;
   return true;
 }
 @Override
 public boolean equals(Object obj) {
   if (this == obj) return true;
   if (obj == null) return false;
   if (getClass() != obj.getClass()) return false;
   ModifySubscriptionRequest other = (ModifySubscriptionRequest) obj;
   if (RequestHeader == null) {
     if (other.RequestHeader != null) return false;
   } else if (!RequestHeader.equals(other.RequestHeader)) return false;
   if (SubscriptionId == null) {
     if (other.SubscriptionId != null) return false;
   } else if (!SubscriptionId.equals(other.SubscriptionId)) return false;
   if (RequestedPublishingInterval == null) {
     if (other.RequestedPublishingInterval != null) return false;
   } else if (!RequestedPublishingInterval.equals(other.RequestedPublishingInterval)) return false;
   if (RequestedLifetimeCount == null) {
     if (other.RequestedLifetimeCount != null) return false;
   } else if (!RequestedLifetimeCount.equals(other.RequestedLifetimeCount)) return false;
   if (RequestedMaxKeepAliveCount == null) {
     if (other.RequestedMaxKeepAliveCount != null) return false;
   } else if (!RequestedMaxKeepAliveCount.equals(other.RequestedMaxKeepAliveCount)) return false;
   if (MaxNotificationsPerPublish == null) {
     if (other.MaxNotificationsPerPublish != null) return false;
   } else if (!MaxNotificationsPerPublish.equals(other.MaxNotificationsPerPublish)) return false;
   if (Priority == null) {
     if (other.Priority != null) return false;
   } else if (!Priority.equals(other.Priority)) return false;
   return true;
 }
 @Override
 public int hashCode() {
   final int prime = 31;
   int result = 1;
   result = prime * result + ((RequestHeader == null) ? 0 : RequestHeader.hashCode());
   result =
       prime * result + ((ClientProtocolVersion == null) ? 0 : ClientProtocolVersion.hashCode());
   result = prime * result + ((RequestType == null) ? 0 : RequestType.hashCode());
   result = prime * result + ((SecurityMode == null) ? 0 : SecurityMode.hashCode());
   result = prime * result + ((ClientNonce == null) ? 0 : ClientNonce.hashCode());
   result = prime * result + ((RequestedLifetime == null) ? 0 : RequestedLifetime.hashCode());
   return result;
 }
 @Override
 public int hashCode() {
   final int prime = 31;
   int result = 1;
   result = prime * result + ((RequestHeader == null) ? 0 : RequestHeader.hashCode());
   result = prime * result + ((SubscriptionId == null) ? 0 : SubscriptionId.hashCode());
   result =
       prime * result
           + ((RequestedPublishingInterval == null) ? 0 : RequestedPublishingInterval.hashCode());
   result =
       prime * result + ((RequestedLifetimeCount == null) ? 0 : RequestedLifetimeCount.hashCode());
   result =
       prime * result
           + ((RequestedMaxKeepAliveCount == null) ? 0 : RequestedMaxKeepAliveCount.hashCode());
   result =
       prime * result
           + ((MaxNotificationsPerPublish == null) ? 0 : MaxNotificationsPerPublish.hashCode());
   result = prime * result + ((Priority == null) ? 0 : Priority.hashCode());
   return result;
 }
 @Override
 public int hashCode() {
   final int prime = 31;
   int result = 1;
   result = prime * result + ((ResponseHeader == null) ? 0 : ResponseHeader.hashCode());
   result = prime * result + ((SessionId == null) ? 0 : SessionId.hashCode());
   result = prime * result + ((AuthenticationToken == null) ? 0 : AuthenticationToken.hashCode());
   result =
       prime * result + ((RevisedSessionTimeout == null) ? 0 : RevisedSessionTimeout.hashCode());
   result = prime * result + ((ServerNonce == null) ? 0 : ServerNonce.hashCode());
   result = prime * result + ((ServerCertificate == null) ? 0 : ServerCertificate.hashCode());
   result = prime * result + ((ServerEndpoints == null) ? 0 : Arrays.hashCode(ServerEndpoints));
   result =
       prime * result
           + ((ServerSoftwareCertificates == null)
               ? 0
               : Arrays.hashCode(ServerSoftwareCertificates));
   result = prime * result + ((ServerSignature == null) ? 0 : ServerSignature.hashCode());
   result =
       prime * result + ((MaxRequestMessageSize == null) ? 0 : MaxRequestMessageSize.hashCode());
   return result;
 }
 @Override
 public boolean equals(Object obj) {
   if (this == obj) return true;
   if (obj == null) return false;
   if (getClass() != obj.getClass()) return false;
   CreateSessionResponse other = (CreateSessionResponse) obj;
   if (ResponseHeader == null) {
     if (other.ResponseHeader != null) return false;
   } else if (!ResponseHeader.equals(other.ResponseHeader)) return false;
   if (SessionId == null) {
     if (other.SessionId != null) return false;
   } else if (!SessionId.equals(other.SessionId)) return false;
   if (AuthenticationToken == null) {
     if (other.AuthenticationToken != null) return false;
   } else if (!AuthenticationToken.equals(other.AuthenticationToken)) return false;
   if (RevisedSessionTimeout == null) {
     if (other.RevisedSessionTimeout != null) return false;
   } else if (!RevisedSessionTimeout.equals(other.RevisedSessionTimeout)) return false;
   if (ServerNonce == null) {
     if (other.ServerNonce != null) return false;
   } else if (!ServerNonce.equals(other.ServerNonce)) return false;
   if (ServerCertificate == null) {
     if (other.ServerCertificate != null) return false;
   } else if (!ServerCertificate.equals(other.ServerCertificate)) return false;
   if (ServerEndpoints == null) {
     if (other.ServerEndpoints != null) return false;
   } else if (!Arrays.equals(ServerEndpoints, other.ServerEndpoints)) return false;
   if (ServerSoftwareCertificates == null) {
     if (other.ServerSoftwareCertificates != null) return false;
   } else if (!Arrays.equals(ServerSoftwareCertificates, other.ServerSoftwareCertificates))
     return false;
   if (ServerSignature == null) {
     if (other.ServerSignature != null) return false;
   } else if (!ServerSignature.equals(other.ServerSignature)) return false;
   if (MaxRequestMessageSize == null) {
     if (other.MaxRequestMessageSize != null) return false;
   } else if (!MaxRequestMessageSize.equals(other.MaxRequestMessageSize)) return false;
   return true;
 }
 public static ServerState valueOf(UnsignedInteger value) {
   return value == null ? null : valueOf(value.intValue());
 }