See source:trunk/ProjectFortress/not_passing_yet/SymbolicOverloadBug.fss in which two generic overloadings of a function use the same type variable name but have exclusive bounds. This overloading ought to be permitted, and is accepted if the variables have distinct textual names. If they have the same textual name they are inadvertently commoned up, and one of the instantiations trumps the other one (so that both instantiations look like they have upper bound ZZ32 or String for type T). Proposed present solution: use the bounds of a symbolic type as the map key for that type, rather than the textual name. In future, we will also need to account for where clauses, so an alternative might be to include location information in the map key for a symbolic type.
If distinct textual type variable names are chosen, overlap checking appears to work correctly.