code: public HtmlPolicyBuilder withPreprocessor(HtmlStreamEventProcessor pp) {
      this.preprocessor = HtmlStreamEventProcessor.Processors.compose(
          this.preprocessor, pp);
      return this;
    }
docs: Inserts a pre-processor into the pipeline between the lexer and the policy.
  Pre-processors receive HTML events before the policy, so the policy will
  be applied to anything they add.
  Pre-processors are not in the TCB since they cannot bypass the policy.