code: function combineStrings(types, opts) {
    var symbols = {};
    var i, l, type, typeSymbols;
    for (i = 0, l = types.length; i < l; i++) {
      type = types[i];
      if (type.getTypeName() === 'string') {
        // If at least one of the types is a string, it will be the supertype.
        return type;
      }
      typeSymbols = type.getSymbols();
      var j, m;
      for (j = 0, m = typeSymbols.length; j < m; j++) {
        symbols[typeSymbols[j]] = true;
      }
    }
    return createType({type: 'enum', symbols: Object.keys(symbols)}, opts);
  }
docs: Combine enums and strings.
  
  The order of the returned symbols is undefined and the returned enum is
  anonymous.