I think we need one more case here, as if we're going from fixedWidth -> variableWidth or visaversa, we always want to proceed, as this is the code that figures out what the maxLength will be. So this:
```
if ((Objects.equal(maxLength, desiredMaxLength) || maxLength == null || desiredMaxLength == null)
                 && actualType.isBytesComparableWith(desiredType) && actualType.isFixedWidth() == desiredType.isFixedWidth() && actualModifer == expectedModifier)
```
```