x = coords[0]; y = coords[1];
x = coords[4]; y = coords[5];
  private Shape solidStroke(PathIterator pi)  {    double[] coords = new double[6];    double x, y, x0, y0;    boolean pathOpen = false;    GeneralPath output = new GeneralPath( );    Segment[] p;    x = x0 = y = y0 = 0;    while( !pi.isDone() )      {        switch( pi.currentSegment(coords) )          {          case PathIterator.SEG_MOVETO:            x0 = x = coords[0];            y0 = y = coords[1];            if( pathOpen )              {                capEnds();                              convertPath(output, start);                start = end = null;                pathOpen = false;              }            break;          case PathIterator.SEG_LINETO:            p = (new LineSegment(x, y, coords[0], coords[1])).              getDisplacedSegments(width/2.0);            if( !pathOpen )              {                start = p[0];                end = p[1];                pathOpen = true;              }            else              addSegments(p);            x = coords[0];            y = coords[1];            break;          case PathIterator.SEG_QUADTO:            p = (new QuadSegment(x, y, coords[0], coords[1], coords[2],                                  coords[3])).getDisplacedSegments(width/2.0);            if( !pathOpen )              {                start = p[0];                end = p[1];                pathOpen = true;              }            else              addSegments(p);            x = coords[0];            y = coords[1];            break;          case PathIterator.SEG_CUBICTO:            p = new CubicSegment(x, y, coords[0], coords[1],                                 coords[2], coords[3],                                 coords[4], coords[5]).getDisplacedSegments(width/2.0);            if( !pathOpen )              {                start = p[0];                end = p[1];                pathOpen = true;              }            else              addSegments(p);            x = coords[0];            y = coords[1];            break;          case PathIterator.SEG_CLOSE:            p = (new LineSegment(x, y, x0, y0)).getDisplacedSegments(width/2.0);            addSegments(p);            convertPath(output, start);            convertPath(output, end);            start = end = null;            pathOpen = false;            break;          }        pi.next();      }    if( pathOpen )      {        capEnds();        convertPath(output, start);      }    return output;  }