class InstanceAuditHeader extends InstanceElementHeader {

    @Override
    public boolean equals(Object objectToCompare)
    {
        if (this == objectToCompare)
        {
            return true;
        }
        if (objectToCompare == null || getClass() != objectToCompare.getClass())
        {
            return false;
        }
        InstanceAuditHeader that = (InstanceAuditHeader) objectToCompare;
        return getVersion() == that.getVersion() &&
                       Objects.equals(getType(), that.getType()) &&
                       getInstanceProvenanceType() == that.getInstanceProvenanceType() &&
                       Objects.equals(getMetadataCollectionId(), that.getMetadataCollectionId()) &&
                       Objects.equals(getMetadataCollectionName(), that.getMetadataCollectionName()) &&
                       Objects.equals(getReplicatedBy(), that.getReplicatedBy()) &&
                       Objects.equals(getInstanceLicense(), that.getInstanceLicense()) &&
                       Objects.equals(getCreatedBy(), that.getCreatedBy()) &&
                       Objects.equals(getUpdatedBy(), that.getUpdatedBy()) &&
                       Objects.equals(getMaintainedBy(), that.getMaintainedBy()) &&
                       Objects.equals(getCreateTime(), that.getCreateTime()) &&
                       Objects.equals(getUpdateTime(), that.getUpdateTime()) &&
                       currentStatus == that.currentStatus &&
                       getStatusOnDelete() == that.getStatusOnDelete() &&
                       Objects.equals(getMappingProperties(), that.getMappingProperties());
    }

    public  InstanceAuditHeader();
    public  InstanceAuditHeader(InstanceAuditHeader template);

}