Since we have the sizes handy, all of the above -- including two-way TIMESTAMP <--> BIGINT could be expressed more concisely:

    if (oldType.isInteger() && newType.isInteger()) {
        return  && oldSize <= newSize
    }