Maybe its best to disentangle the changes a bit: a) refactoring of type inference boilerplate, b) sharper intersection types,  c) propagation of singleton types.