private void FixupOutPolygon(OutRec outRec) {
		// FixupOutPolygon() - removes duplicate points and simplifies consecutive
		// parallel edges by removing the middle vertex.
		OutPt lastOK = null;
		outRec.bottomPt = null;
		OutPt pp = outRec.pts;
		for(;;) {
			if(pp.prev == pp || pp.prev == pp.next) {
				outRec.pts = null;
				return;
			}
			// test for duplicate points and for same slope (cross-product) ...
			if(PointsEqual(pp.pt, pp.next.pt) || SlopesEqual(pp.prev.pt, pp.pt, pp.next.pt, m_UseFullRange)) {
				lastOK = null;
				OutPt tmp = pp;
				pp.prev.next = pp.next;
				pp.next.prev = pp.prev;
				pp = pp.prev;
				tmp = null;
			} else if(pp == lastOK)
				break;
			else {
				if(lastOK == null)
					lastOK = pp;
				pp = pp.next;
			}
		}
		outRec.pts = pp;
	}