protected Symbol createSymbol(GraphPoint point, GraphicAttributes attributes,
                             Hint hintForNextPoint,
                             Hint hintFromPreviousCurve) {
    GraphPoint origin = new GraphPoint(null);
    GraphPoint position = origin;
    if (hintFromPreviousCurve instanceof PositionHint) {
      origin = ((PositionHint) hintFromPreviousCurve).getOrigin();
      position = ((PositionHint) hintFromPreviousCurve).getPosition();
    }
    double px = position.getX();
    double py = position.getY();
    double x = point.getX() - origin.getX();
    double y = point.getY() - origin.getY();
    if (_horizontalBars) {
      y = _size;
      position = new GraphPoint(px + 0.5 * x, point.getY() + py);
      px += _stacked ? x : 0;
      py += _stacked ? 0 : _size;
    } else {
      x = _size;
      position = new GraphPoint(point.getX() + px, py + 0.5 * y);
      px += _stacked ? 0 : _size;
      py += _stacked ? y : 0;
    }
    Hint hintForNextCurve = new PositionHint(origin, new GraphPoint(px, py));
    return new Symbol(new Rectangle(position, Math.abs(x), Math.abs(y), 
                                    attributes),
                      hintForNextPoint, hintForNextCurve);
  }