code: function (index, xy) {
  		var show = true,
  			axis = this.axis,
  			chart = axis.chart,
  			isFirst = this.isFirst,
  			isLast = this.isLast,
  			x = xy.x,
  			reversed = axis.reversed,
  			tickPositions = axis.tickPositions;
  
  		if (isFirst || isLast) {
  
  			var sides = this.getLabelSides(),
  				leftSide = sides[0],
  				rightSide = sides[1],
  				plotLeft = chart.plotLeft,
  				plotRight = plotLeft + axis.len,
  				neighbour = axis.ticks[tickPositions[index + (isFirst ? 1 : -1)]],
  				neighbourEdge = neighbour && neighbour.label.xy && neighbour.label.xy.x + neighbour.getLabelSides()[isFirst ? 0 : 1];
  
  			if ((isFirst && !reversed) || (isLast && reversed)) {
  				// Is the label spilling out to the left of the plot area?
  				if (x + leftSide < plotLeft) {
  
  					// Align it to plot left
  					x = plotLeft - leftSide;
  
  					// Hide it if it now overlaps the neighbour label
  					if (neighbour && x + rightSide > neighbourEdge) {
  						show = false;
  					}
  				}
  
  			} else {
  				// Is the label spilling out to the right of the plot area?
  				if (x + rightSide > plotRight) {
  
  					// Align it to plot right
  					x = plotRight - rightSide;
  
  					// Hide it if it now overlaps the neighbour label
  					if (neighbour && x + leftSide < neighbourEdge) {
  						show = false;
  					}
  
  				}
  			}
  
  			// Set the modified x position of the label
  			xy.x = x;
  		}
  		return show;
  	}
docs: Handle the label overflow by adjusting the labels to the left and right edge, or
  hide them if they collide into the neighbour label.