class KerberosIdentityDescriptor extends AbstractKerberosDescriptor {

  @Override
  public boolean equals(Object object) {
    if (object == null) {
      return false;
    } else if (object == this) {
      return true;
    } else if (object.getClass() == KerberosIdentityDescriptor.class) {
      KerberosIdentityDescriptor descriptor = (KerberosIdentityDescriptor) object;
      return super.equals(object) &&
          (
              (getReference() == null)
                  ? (descriptor.getReference() == null)
                  : getReference().equals(descriptor.getReference())
          ) &&
          (
              (getPrincipalDescriptor() == null)
                  ? (descriptor.getPrincipalDescriptor() == null)
                  : getPrincipalDescriptor().equals(descriptor.getPrincipalDescriptor())
          ) &&
          (
              (getKeytabDescriptor() == null)
                  ? (descriptor.getKeytabDescriptor() == null)
                  : getKeytabDescriptor().equals(descriptor.getKeytabDescriptor())
          ) &&
          (
              (getWhen() == null)
                  ? (descriptor.getWhen() == null)
                  : getWhen().equals(descriptor.getWhen())
          );
    } else {
      return false;
    }
  }

  public  KerberosIdentityDescriptor(String name, String reference, KerberosPrincipalDescriptor principal, KerberosKeytabDescriptor keytab, Predicate when);
  public  KerberosIdentityDescriptor(Map<?, ?> data);

}