liquibase-core/src/main/java/liquibase/datatype/DataTypeFactory.java
public void register(LiquibaseDataType type) {
        try {
            List<String> names = new ArrayList<>();
            names.add(type.getName());
            names.addAll(Arrays.asList(type.getAliases()));

            Comparator<Class<? extends LiquibaseDataType>> comparator = (o1, o2) -> {
                try {
                    return -1 * Integer.compare(o1.getConstructor().newInstance().getPriority(), o2.getConstructor().newInstance().getPriority());
                } catch (Exception e) {
                    throw new UnexpectedLiquibaseException(e);
                }
            };

            for (String name : names) {
                name = name.toLowerCase(Locale.US);
                registry.computeIfAbsent(name, k -> new ArrayList<>());
                List<Class<? extends LiquibaseDataType>> classes = registry.get(name);
                classes.add(type.getClass());
                classes.sort(comparator);
            }
        } catch (Exception e) {
            throw new UnexpectedLiquibaseException(e);
        }
    }
public void register(LiquibaseDataType type) {
        try {
            List<String> names = new ArrayList<>();
            names.add(type.getName());
            names.addAll(Arrays.asList(type.getAliases()));

            Comparator<Class<? extends LiquibaseDataType>> comparator = (o1, o2) -> {
                try {
                    return -1 * Integer.compare(o1.getConstructor().newInstance().getPriority(), o2.getConstructor().newInstance().getPriority());
                } catch (Exception e) {
                    throw new UnexpectedLiquibaseException(e);
                }
            };

            for (String name : names) {
                name = name.toLowerCase(Locale.US);
                registry.computeIfAbsent(name, k -> new ArrayList<>());
                List<Class<? extends LiquibaseDataType>> classes = registry.get(name);
                classes.add(type.getClass());
                classes.sort(comparator);
            }
        } catch (Exception e) {
            throw new UnexpectedLiquibaseException(e);
        }
    }
Registers an implementation of {@link LiquibaseDataType} with both its name and all aliases for the data type
as a handler in the factory's registry. Classes implement the {@link LiquibaseDataType#getPriority()}, which will
cause the class with the highest priority to become the primary handler for the data type.
@param type the implementation to register