whole_func_string: function(opt_options) {
    /* @type {!Array.<!Annotation>} */
    this.annotations_ = [];
    // Used to detect resizes (which require the divs to be repositioned).
    this.lastWidth_ = -1;
    this.lastHeight = -1;
    this.dygraph_ = null;
  
    opt_options = opt_options || {};
    this.defaultAnnotationProperties_ = $.extend({
      'text': 'Description'
    }, opt_options['defaultAnnotationProperties']);
  }
func_code_string: function(opt_options) {
    /* @type {!Array.<!Annotation>} */
    this.annotations_ = [];
    // Used to detect resizes (which require the divs to be repositioned).
    this.lastWidth_ = -1;
    this.lastHeight = -1;
    this.dygraph_ = null;
  
    opt_options = opt_options || {};
    this.defaultAnnotationProperties_ = $.extend({
      'text': 'Description'
    }, opt_options['defaultAnnotationProperties']);
  }
func_documentation_string: These are just the basic requirements -- annotations can have whatever other
  properties the code that displays them wants them to have.
  
  @typedef {
  xval:  number,      // x-value (i.e. millis or a raw number)
  series: string,     // series name
  yFrac: ?number,     // y-positioning. Default is a few px above the point.
  lineDiv: !Element   // vertical div connecting point to info div.
  infoDiv: !Element   // div containing info about the annotation.
  } Annotation