/**
  * @param IContextSource $context
  * @param AbstractRevision $newRevision
  * @param AbstractRevision|null $oldRevision
  * @param Title $title
  * @return Status
  */
 public function validate(IContextSource $context, AbstractRevision $newRevision, AbstractRevision $oldRevision = null, Title $title)
 {
     $vars = \AbuseFilter::getEditVars($title);
     $vars->addHolders(\AbuseFilter::generateUserVars($this->user), \AbuseFilter::generateTitleVars($title, 'ARTICLE'));
     $vars->setVar('ACTION', $newRevision->getChangeType());
     /*
      * This should not roundtrip to Parsoid; AbuseFilter checks will be
      * performed upon submitting new content, and content is always
      * submitted in wikitext. It will only be transformed once it's being
      * saved to DB.
      */
     $vars->setLazyLoadVar('new_wikitext', 'FlowRevisionContent', array('revision' => $newRevision));
     $vars->setLazyLoadVar('new_size', 'length', array('length-var' => 'new_wikitext'));
     /*
      * This may roundtrip to Parsoid if content is stored in HTML.
      * Since the variable is lazy-loaded, it will not roundtrip unless the
      * variable is actually used.
      */
     $vars->setLazyLoadVar('old_wikitext', 'FlowRevisionContent', array('revision' => $oldRevision));
     $vars->setLazyLoadVar('old_size', 'length', array('length-var' => 'old_wikitext'));
     return \AbuseFilter::filterAction($vars, $title, $this->group);
 }