return null;
final double minx = getX(); final double miny = getY(); final double maxx = minx + getWidth(); final double maxy = miny + getHeight(); final double arcwidth = getArcWidth(); final double archeight = getArcHeight(); return new PathIterator() {  private int current = 0;   private PathIterator corner;   private Arc2D arc = new Arc2D.Double();   private double[] temp = new double[2];  public int getWindingRule() { return WIND_NON_ZERO; }  public boolean isDone() { return current > 9; }  private void getPoint(int val) { switch (val) { case 0: case 8: temp[0] = minx; temp[1] = miny + archeight; break; case 1: temp[0] = minx + arcwidth; temp[1] = miny; break; case 2: temp[0] = maxx - arcwidth; temp[1] = maxy; break; case 3: temp[0] = maxx; temp[1] = miny + archeight; break; case 4: temp[0] = maxx; temp[1] = maxy - archeight; break; case 5: temp[0] = maxx - arcwidth; temp[1] = maxy; break; case 6: temp[0] = minx + arcwidth; temp[1] = maxy; break; case 7: temp[0] = minx; temp[1] = maxy - archeight; break; } }  public void next() { if (current >= 8) ++current; else if (corner != null) {    corner.next(); if (corner.isDone()) { corner = null; ++current; } } else {   getPoint(current); double x1 = temp[0]; double y1 = temp[1]; getPoint(current + 1); arc.setFrameFromDiagonal(x1, y1, temp[0], temp[1]); arc.setAngles(x1, y1, temp[0], temp[1]); corner = arc.getPathIterator(at); } }  public int currentSegment(float[] coords) { if (corner != null) { int r = corner.currentSegment(coords); if (r == SEG_MOVETO) r = SEG_LINETO; return r; }  if (current < 9) { getPoint(current); coords[0] = (float) temp[0]; coords[1] = (float) temp[1]; } else if (current == 9) return SEG_CLOSE; else throw new NoSuchElementException("rect iterator out of bounds");  if (at != null) at.transform(coords, 0, coords, 0, 1); return current == 0 ? SEG_MOVETO : SEG_LINETO; }  public int currentSegment(double[] coords) { if (corner != null) { int r = corner.currentSegment(coords); if (r == SEG_MOVETO) r = SEG_LINETO; return r; }  if (current < 9) { getPoint(current); coords[0] = temp[0]; coords[1] = temp[1]; } else if (current == 9) return SEG_CLOSE; else throw new NoSuchElementException("rect iterator out of bounds");  if (at != null) at.transform(coords, 0, coords, 0, 1); return current == 0 ? SEG_MOVETO : SEG_LINETO; } };
  public PathIterator getPathIterator(AffineTransform at)  {    // FIXME.    return null;  }