sclass OnePathWithOrigin > OnePath { settable Pt origin = pt(0, 0); *() {} *(S path) { super(path); } *(Pt *origin, S path) { super(path); } *(int originX, int originY, S path) { super(path); origin = pt(originX, originY); } *(Iterable points, bool close) { var l = asList(points); origin = first(l); fromPoints(l, close); } *(OnePathWithOrigin path) { super(path); origin = path.origin; } toString { ret "Origin (" + origin + "), path: " + super.toString(); } OnePathWithOrigin reversed() { ret new OnePathWithOrigin(reversedList(pointList()), false); } }