class TypeDef extends TypeDefSummary {

    @Override
    public boolean equals(Object objectToCompare)
    {
        if (this == objectToCompare)
        {
            return true;
        }
        if (!(objectToCompare instanceof TypeDef))
        {
            return false;
        }
        if (!super.equals(objectToCompare))
        {
            return false;
        }
        TypeDef typeDef = (TypeDef) objectToCompare;
        return Objects.equals(getSuperType(), typeDef.getSuperType()) &&
                Objects.equals(getDescription(), typeDef.getDescription()) &&
                Objects.equals(getDescriptionGUID(), typeDef.getDescriptionGUID()) &&
                Objects.equals(getOrigin(), typeDef.getOrigin()) &&
                Objects.equals(getCreatedBy(), typeDef.getCreatedBy()) &&
                Objects.equals(getUpdatedBy(), typeDef.getUpdatedBy()) &&
                Objects.equals(getCreateTime(), typeDef.getCreateTime()) &&
                Objects.equals(getUpdateTime(), typeDef.getUpdateTime()) &&
                Objects.equals(getOptions(), typeDef.getOptions()) &&
                Objects.equals(getExternalStandardMappings(), typeDef.getExternalStandardMappings()) &&
                Objects.equals(getValidInstanceStatusList(), typeDef.getValidInstanceStatusList()) &&
                getInitialStatus() == typeDef.getInitialStatus() &&
                Objects.equals(getPropertiesDefinition(), typeDef.getPropertiesDefinition());
    }

    protected  TypeDef();
    protected  TypeDef(TypeDefCategory category);
      TypeDef(TypeDefCategory category,
            String          guid,
            String          name,
            long            version,
            String          versionName);
    protected  TypeDef(TypeDef template);

}