code: protected int matchString(String text, int start, int field, String[] data, Calendar cal)
      {
          return matchString(text, start, field, data, null, cal);
      }
docs: Attempt to match the text at a given position against an array of
  strings.  Since multiple strings in the array may match (for
  example, if the array contains "a", "ab", and "abc", all will match
  the input string "abcd") the longest match is returned.  As a side
  effect, the given field of <code>cal</code> is set to the index
  of the best match, if there is one.
  @param text the time text being parsed.
  @param start where to start parsing.
  @param field the date field being parsed.
  @param data the string array to parsed.
  @param cal
  @return the new start position if matching succeeded; a negative
  number indicating matching failure, otherwise.  As a side effect,
  sets the <code>cal</code> field <code>field</code> to the index
  of the best match, if matching succeeded.