private Path2D createPath(int scale, boolean closed) {
      Path2D path = new Path2D.Double();

      int left = scale * getLeftGap();
      int right = scale * getRightGap();
      if (parent != null) {
        left += right;
        path.moveTo(bounds.x - left, bounds.y);
        path.lineTo(bounds.x - left + right, bounds.y + bounds.height * 0.5);
      }
      else {
        path.moveTo(bounds.x - left, bounds.y);
      }
      path.lineTo(bounds.x - left, bounds.y + bounds.height);
      if (closed) {
        path.lineTo(bounds.x + bounds.width, bounds.y + bounds.height);
        path.lineTo(bounds.x + bounds.width + right, bounds.y + bounds.height * 0.5);
        path.lineTo(bounds.x + bounds.width, bounds.y);
        path.closePath();
      }
      return path;
    }
private Path2D createPath(int scale, boolean closed)