code: public static String oxford(final Object[] items, final int limit, final String limitStr)
      {
          if (items == null || items.length == 0)
          {
              return "";
          }
  
          int itemsNum = items.length;
  
          if (itemsNum == 1)
          {
              return items[0].toString();
          }
  
          ResourceBundle bundle = context.get().getBundle();
  
          if (itemsNum == 2)
          {
              return format(bundle.getString("oxford.pair"), items[0], items[1]);
          }
  
          int limitIndex;
          String append;
          int extra = itemsNum - limit;
  
          if (limit > 0 && extra > 1)
          {
              limitIndex = limit;
              String pattern = Strings.isNullOrEmpty(limitStr) ? bundle.getString("oxford.extra") : limitStr;
              append = format(pattern, extra);
          } else
          {
              limitIndex = itemsNum - 1;
              append = items[limitIndex].toString();
          }
  
          String pattern = bundle.getString("oxford");
          return format(pattern, commaJoiner.join(Arrays.copyOf(items, limitIndex)), append);
      }
docs: <p>
  Converts a list of items to a human readable string with an optional
  limit.
  </p>
  
  @param items
  The items array
  @param limit
  The number of items to print. -1 for unbounded.
  @param limitStr
  The string to be appended after extra items. Null or "" for
  default.
  @return human readable representation of a bounded list of items