code: function Supstance() { // Closure function
      var p = {},  // Container for private, direct access mixed in variables
          dispatch = d3_dispatch('mouseenter', 'mouseout', 'mousemove', 'drag', 'dragstart', 'dragend'),
          annotation = [];
  
      function supstance(g) {
        var group = plot.groupSelect(g, plot.dataMapper.unity);
  
        group.entry.append('g').attr('class', 'supstance')
          .append('path');
  
        plot.annotation.append(group.entry, annotation, 'y', p.accessor, p.yScale);
  
        var interaction = group.entry.append('g').attr('class', 'interaction').style({ opacity: 0, fill: 'none' })
          .call(plot.interaction.mousedispatch(dispatch));
  
        interaction.append('path').style('stroke-width', 16);
  
        supstance.refresh(g);
      }
  
      supstance.refresh = function(g) {
        refresh(g, plot, p.accessor, p.xScale, p.yScale, g.selectAll('.axisannotation.y > g'), annotation);
      };
  
      supstance.drag = function(g) {
        g.selectAll('.interaction path')
          .call(dragBody(dispatch, p.accessor, p.xScale, p.yScale, annotation));
      };
  
      supstance.annotation = function(_) {
        if(!arguments.length) return annotation;
        annotation = _ instanceof Array ? _ : [_];
        return supstance;
      };
  
      // Mixin 'superclass' methods and variables
      plotMixin(supstance, p)
        .plot(accessor_value())
        .on(dispatch);
  
      return supstance;
    }
docs: Injected dependencies