code: public void annotate(Run<?,?> build, Entry change, MarkupText text) {
          if (build instanceof AbstractBuild && Util.isOverridden(ChangeLogAnnotator.class, getClass(), "annotate", AbstractBuild.class, Entry.class, MarkupText.class)) {
              annotate((AbstractBuild) build, change, text);
          } else {
              Logger.getLogger(ChangeLogAnnotator.class.getName()).log(Level.WARNING, "You must override the newer overload of annotate from {0}", getClass().getName());
          }
      }
docs: Called by Hudson to allow markups to be added to the changelog text.
  
  <p>
  This method is invoked each time a page is rendered, so implementations
  of this method should not take too long to execute. Also note that
  this method may be invoked concurrently by multiple threads.
  
  <p>
  If there's any error during the processing, it should be recorded in
  {@link Logger} and the method should return normally.
  
  @param build
  Build that owns this changelog. From here you can access broader contextual
  information, like the project, or it settings. Never null.
  @param change
  The changelog entry for which this method is adding markup.
  Never null.
  @param text
  The text and markups. Implementation of this method is expected to
  add additional annotations into this object. If other annotators
  are registered, the object may already contain some markups when this
  method is invoked. Never null. {@link MarkupText#getText()} on this instance
  will return the same string as {@link Entry#getMsgEscaped()}.
  @since 1.568