code: function underlineTypeVars(typeInfo, valuesByPath) {
      //  Note: Sorting these keys lexicographically is not "correct", but it
      //  does the right thing for indexes less than 10.
      var paths = Z.map (JSON.parse, sortedKeys (valuesByPath));
      return underline (
        typeInfo,
        K (K (_)),
        function(index) {
          return function(f) {
            return function(t) {
              return function(propPath) {
                var indexedPropPath = Z.concat ([index], propPath);
                return function(s) {
                  if (paths.some (isPrefix (indexedPropPath))) {
                    var key = JSON.stringify (indexedPropPath);
                    if (!(hasOwnProperty.call (valuesByPath, key))) return s;
                    if (!(isEmpty (valuesByPath[key]))) return f (s);
                  }
                  return _ (s);
                };
              };
            };
          };
        }
      );
    }
docs: underlineTypeVars :: (TypeInfo, StrMap (Array Any)) -> String