Add some fairly duplicated code to let type legalization split illegal