code: @Override
      public void parse(Reader reader, Sink sink) throws ParseException {
          String source = null;
          try {
              if ((source = IOUtil.toString(reader)) == null) {
                  source = "";
              }
          }
          catch (IOException ex) {
              getLog().error("Could not read AsciiDoc source: " + ex.getLocalizedMessage());
              return;
          }
  
          MavenProject project = mavenProjectProvider.get();
  
          Xpp3Dom siteConfig = getSiteConfig(project);
          File siteDirectory = resolveSiteDirectory(project, siteConfig);
          OptionsBuilder options = processAsciiDocConfig(
                  project,
                  siteConfig,
                  initOptions(project, siteDirectory),
                  initAttributes(project, siteDirectory));
          // QUESTION should we keep OptionsBuilder & AttributesBuilder separate for call to convertAsciiDoc?
          sink.rawText(convertAsciiDoc(source, options));
      }
docs: {@inheritDoc}