private static Path processPath(final List<String> PATH_LIST, final PathReader READER) {
        final Path PATH = new Path();
        PATH.setFillRule(FillRule.EVEN_ODD);
        while (!PATH_LIST.isEmpty()) {
            if ("M".equals(READER.read())) {
                PATH.getElements().add(new MoveTo(READER.nextX(), READER.nextY()));
            } else if ("L".equals(READER.read())) {
                PATH.getElements().add(new LineTo(READER.nextX(), READER.nextY()));
            } else if ("C".equals(READER.read())) {
                PATH.getElements().add(new CubicCurveTo(READER.nextX(), READER.nextY(), READER.nextX(), READER.nextY(), READER.nextX(), READER.nextY()));
            } else if ("Q".equals(READER.read())) {
                PATH.getElements().add(new QuadCurveTo(READER.nextX(), READER.nextY(), READER.nextX(), READER.nextY()));
            } else if ("H".equals(READER.read())) {
                PATH.getElements().add(new HLineTo(READER.nextX()));
            } else if ("L".equals(READER.read())) {
                PATH.getElements().add(new VLineTo(READER.nextY()));
            } else if ("A".equals(READER.read())) {
                PATH.getElements().add(new ArcTo(READER.nextX(), READER.nextY(), 0, READER.nextX(), READER.nextY(), false, false));
            } else if ("Z".equals(READER.read())) {
                PATH.getElements().add(new ClosePath());
            }
        }
        return PATH;
    }