class UnknownType extends LiquibaseDataType {

    private boolean autoIncrement;

    public UnknownType() {
        super("UNKNOWN", 0, 2);
    }

    public UnknownType(String name) {
        super(name, 0, 2);
    }

    public UnknownType(String name, int minParameters, int maxParameters) {
        super(name, minParameters, maxParameters);
    }

    @Override
    public boolean isAutoIncrement() {
        return autoIncrement;
    }

    public void setAutoIncrement(boolean autoIncrement) {
        this.autoIncrement = autoIncrement;
    }

    @Override
    public DatabaseDataType toDatabaseDataType(Database database) {<FILL_FUNCTION_BODY>}

    @Override
    public String objectToSql(Object value, Database database) {
        if (value instanceof DatabaseFunction) {
            return super.objectToSql(value, database);
        } else {
            return "'"+super.objectToSql(value, database)+"'";
        }
    }

    @Override
    public LoadDataChange.LOAD_DATA_TYPE getLoadTypeName() {
        return LoadDataChange.LOAD_DATA_TYPE.STRING;
    }
}

        int dataTypeMaxParameters;
        if ("enum".equals(getName().toLowerCase(Locale.US)) || "set".equals(getName().toLowerCase(Locale.US))) {
            dataTypeMaxParameters = Integer.MAX_VALUE;
        } else {
            dataTypeMaxParameters = database.getDataTypeMaxParameters(getName());
        }
        Object[] parameters = getParameters();

        if (database instanceof OracleDatabase) {
            if ("LONG".equals(getName().toUpperCase(Locale.US))
                    || "BFILE".equals(getName().toUpperCase(Locale.US))
                    || "ROWID".equals(getName().toUpperCase(Locale.US))
                    || "ANYDATA".equals(getName().toUpperCase(Locale.US))
                    || "SDO_GEOMETRY".equals(getName().toUpperCase(Locale.US))
                    ) {
                parameters = new Object[0];
            } else if ("RAW".equals(getName().toUpperCase(Locale.US))) {
                return new DatabaseDataType(getName(), parameters);
            } else if (getName().toUpperCase(Locale.US).startsWith("INTERVAL ")) {
                return new DatabaseDataType(getName().replaceAll("\\(\\d+\\)", ""));
            } else {
                // probably a user defined type. Can't call getUserDefinedTypes() to know for sure, since that returns
                // all types including system types.
                return new DatabaseDataType(getName().toUpperCase(Locale.US));
            }
        }

        if (dataTypeMaxParameters < parameters.length) {
            parameters = Arrays.copyOfRange(parameters, 0, dataTypeMaxParameters);
        }
        DatabaseDataType type;
        if (database instanceof MSSQLDatabase) {
            if ( (parameters.length >= 1) &&
                (this.getRawDefinition().matches("(?i)\\[?datetimeoffset\\]?.*")) &&
                (Integer.parseInt(parameters[0].toString()) ==
                    (database.getDefaultScaleForNativeDataType("datetimeoffset"))) ) {
                parameters = new Object[0];
            }
            type = new DatabaseDataType(database.escapeDataTypeName(getName()), parameters);
        } else {
            type = new DatabaseDataType(getName().toUpperCase(Locale.US), parameters);
        }
        type.addAdditionalInformation(getAdditionalInformation());

        return type;
    
<methods>public void <init>() ,public void addParameter(java.lang.Object) ,public boolean equals(java.lang.Object) ,public void finishInitialization(java.lang.String) ,public java.lang.String getAdditionalInformation() ,public java.lang.String[] getAliases() ,public abstract liquibase.change.core.LoadDataChange.LOAD_DATA_TYPE getLoadTypeName() ,public int getMaxParameters(liquibase.database.Database) ,public int getMinParameters(liquibase.database.Database) ,public java.lang.String getName() ,public java.lang.Object[] getParameters() ,public int getPriority() ,public java.lang.String getRawDefinition() ,public int hashCode() ,public boolean isAutoIncrement() ,public java.lang.String objectToSql(java.lang.Object, liquibase.database.Database) ,public void setAdditionalInformation(java.lang.String) ,public java.lang.Object sqlToObject(java.lang.String, liquibase.database.Database) ,public boolean supports(liquibase.database.Database) ,public liquibase.datatype.DatabaseDataType toDatabaseDataType(liquibase.database.Database) ,public java.lang.String toString() ,public boolean validate(liquibase.database.Database) <variables>private java.lang.String additionalInformation,private final non-sealed java.lang.String[] aliases,private final non-sealed int maxParameters,private final non-sealed int minParameters,private final non-sealed java.lang.String name,private final List<java.lang.Object> parameters,private final non-sealed int priority,private java.lang.String rawDefinition