The section "Case Sensitivity and Case Mapping" describes in detail how to implement case insensitive mapping. This is currently necessary because String.prototype.toUpperCase/toLowerCase are specified in a way that doesn't quite fit the needs here, but likely also doesn't match implementations:
https://bugs.ecmascript.org/show_bug.cgi?id=206
Once the specification of String.prototype.toUpperCase/toLowerCase is fixed, the section "Case Sensitivity and Case Mapping" can be removed and replaced with simple references to toUpperCase/toLowerCase in the algorithms.
Discussed with Allen; he thinks it's better to stick with the current spec and not depend on toUpperCase/toLowerCase.