@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 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;
 }