code: @Nullable
    private static CSSNode _readStyleDeclaration (@Nonnull final CharStream aCharStream,
                                                  @Nonnull final ECSSVersion eVersion,
                                                  @Nullable final ICSSParseErrorHandler aCustomErrorHandler,
                                                  @Nonnull final ICSSParseExceptionCallback aCustomExceptionHandler)
    {
      switch (eVersion)
      {
        case CSS21:
        case CSS30:
        {
          final ParserCSS30TokenManager aTokenHdl = new ParserCSS30TokenManager (aCharStream);
          aTokenHdl.setCustomErrorHandler (aCustomErrorHandler);
          final ParserCSS30 aParser = new ParserCSS30 (aTokenHdl);
          aParser.setCustomErrorHandler (aCustomErrorHandler);
          try
          {
            // Main parsing
            return aParser.styleDeclarationList ();
          }
          catch (final ParseException ex)
          {
            // Unrecoverable error
            aCustomExceptionHandler.onException (ex);
            return null;
          }
        }
        default:
          throw new IllegalArgumentException ("Unsupported CSS version " + eVersion);
      }
    }
docs: Main reading of the CSS
  
  @param aCharStream
  The stream to read from. May not be <code>null</code>.
  @param eVersion
  The CSS version to use. May not be <code>null</code>.
  @param aCustomErrorHandler
  A custom handler for recoverable errors. May be <code>null</code>.
  @param aCustomExceptionHandler
  A custom handler for unrecoverable errors. May not be
  <code>null</code>.
  @return <code>null</code> if parsing failed with an unrecoverable error
  (and no throwing exception handler is used), or <code>null</code>
  if a recoverable error occurred and no
  {@link com.helger.css.reader.errorhandler.ThrowingCSSParseErrorHandler}
  was used or non-<code>null</code> if parsing succeeded.