code: function calculateStopPositions(stop1, stop2, count) {
      var good = function (values, unit) {
          return { values: values, unit: unit };
      };
      var bad = function (warning) {
          return { values: false, unit: '', warning: warning };
      };
  
      // Exit early if either value is calc()
      if (stop1 && isCalc(stop1.positionNode) || stop2 && isCalc(stop2.positionNode)) {
          return bad(errorStopPosition);
      }
  
      var startPos, endPos, baseUnit;
      var hasStartPos = true;
      var hasEndPos = true;
  
      var pos1 = stop1 && unitValue(stop1.positionNode);
      var pos2 = stop2 && unitValue(stop2.positionNode);
      if (!pos1) {
          hasStartPos = false;
          pos1 = { number: '0', unit: '%' };
      } else {
          count++;
      }
      if (!pos2) {
          hasEndPos = false;
          pos2 = { number: '100', unit: '%' };
      } else {
          count++;
      }
  
      // Check if missing stops can be calculated
      if (pos1.unit !== pos2.unit) {
          return bad(errorStopPosition);
      }
      startPos = +pos1.number || 0;
      endPos = +pos2.number || 0;
      baseUnit = pos1.unit;
  
      // Generate as many missing positions as required
      var positions = midRange(startPos, endPos, count);
      // Take off any known positions
      if (hasStartPos) {
          positions.shift();
      }
      if (hasEndPos) {
          positions.pop();
      }
  
      return good(positions, baseUnit);
  }
docs: ----- MAIN ACTIONS ----- 
  Try to calculate a new stop position exactly halfway between two other stops.