Any reason why this is a nested class? Seems cleaner to make it top-level, or maybe make the static things in DataTypes be part of DataType.