whole_func_string: function(idx) {
      // If we've previously found a non-NaN point and haven't gone past it yet,
      // just use that.
      if (nextPointIdx >= idx) return;
  
      // We haven't found a non-NaN point yet or have moved past it,
      // look towards the right to find a non-NaN point.
      for (var j = idx; j < points.length; ++j) {
        // Clear out a previously-found point (if any) since it's no longer
        // valid, we shouldn't use it for interpolation anymore.
        nextPoint = null;
        if (!isNaN(points[j].yval) && points[j].yval !== null) {
          nextPointIdx = j;
          nextPoint = points[j];
          break;
        }
      }
    }
func_code_string: function(idx) {
      // If we've previously found a non-NaN point and haven't gone past it yet,
      // just use that.
      if (nextPointIdx >= idx) return;
  
      // We haven't found a non-NaN point yet or have moved past it,
      // look towards the right to find a non-NaN point.
      for (var j = idx; j < points.length; ++j) {
        // Clear out a previously-found point (if any) since it's no longer
        // valid, we shouldn't use it for interpolation anymore.
        nextPoint = null;
        if (!isNaN(points[j].yval) && points[j].yval !== null) {
          nextPointIdx = j;
          nextPoint = points[j];
          break;
        }
      }
    }
func_documentation_string: Find the next stackable point starting from the given index.