code: public final void parse(final Reader in, final ContentHandler handler)
              throws IOException, ParserException {
  
          final StreamTokenizer tokeniser = new StreamTokenizer(in);
          try {
              tokeniser.resetSyntax();
              tokeniser.wordChars(WORD_CHAR_START, WORD_CHAR_END);
              tokeniser.whitespaceChars(WHITESPACE_CHAR_START,
                      WHITESPACE_CHAR_END);
              tokeniser.ordinaryChar(':');
              tokeniser.ordinaryChar(';');
              tokeniser.ordinaryChar('=');
              tokeniser.ordinaryChar('\t');
              tokeniser.eolIsSignificant(true);
              tokeniser.whitespaceChars(0, 0);
              tokeniser.quoteChar('"');
  
              parseCalendarList(tokeniser, in, handler);
          } catch (IOException | ParseException | URISyntaxException | RuntimeException e) {
  
              if (e instanceof IOException) {
                  throw (IOException) e;
              }
              if (e instanceof ParserException) {
                  throw (ParserException) e;
              } else {
                  throw new ParserException(e.getMessage(), getLineNumber(tokeniser, in), e);
              }
          }
      }
docs: {@inheritDoc}