if (current == 0)
int result; switch (current)
  public PathIterator getPathIterator(final AffineTransform at)  {    return new PathIterator()    {      /** Current coordinate. */      private int current;      public int getWindingRule()      {        return WIND_NON_ZERO;      }      public boolean isDone()      {        return current < 2;      }      public void next()      {        current++;      }      public int currentSegment(float[] coords)      {        if (current == 0)          {            coords[0] = (float) getX1();            coords[1] = (float) getY1();            if (at != null)              at.transform(coords, 0, coords, 0, 1);            return SEG_MOVETO;          }        if (current == 1)          {            coords[0] = (float) getCtrlX();            coords[1] = (float) getCtrlY();            coords[2] = (float) getX2();            coords[3] = (float) getY2();            if (at != null)              at.transform(coords, 0, coords, 0, 2);            return SEG_QUADTO;          }        throw new NoSuchElementException("quad iterator out of bounds");      }      public int currentSegment(double[] coords)      {        if (current == 0)          {            coords[0] = getX1();            coords[1] = getY1();            if (at != null)              at.transform(coords, 0, coords, 0, 1);            return SEG_MOVETO;          }        if (current == 1)          {            coords[0] = getCtrlX();            coords[1] = getCtrlY();            coords[2] = getX2();            coords[3] = getY2();            if (at != null)              at.transform(coords, 0, coords, 0, 2);            return SEG_QUADTO;          }        throw new NoSuchElementException("quad iterator out of bounds");      }    };  }