public void run() {
            for (int i = 0; i < NUM_RUNS; i++) {
                String marker = UUID.randomUUID().toString();
                String html =
                      "<html>\n"
                    + " <head>\n"
                    + "  <style type=\"text/css\">.mceResizeHandle {position: absolute;border: 1px solid black;background: #FFF;width: 5px;height: 5px;z-index: 10000}.mceResizeHandle:hover {background: #000}img[data-mce-selected] {outline: 1px solid black}img.mceClonedResizable, table.mceClonedResizable {position: absolute;outline: 1px dashed black;opacity: .5;z-index: 10000}\n"
                    + "</style>\n"
                    + " </head>\n"
                    + " <body style=\"\">\n"
                    + "  <div>\n"
                    + "   wurst\n"
                    + "  </div> \n"
                    + "  <div>\n"
                    + "   gurke\n"
                    + "  </div> \n"
                    + "  <div>\n"
                    + "   hund\n"
                    + "  </div> \n"
                    + "  <div>\n"
                    + "   " + marker +"\n"
                    + "  </div> \n"
                    + "  <div>\n"
                    + "   autobahn\n"
                    + "  </div> \n"
                    + "  <div>\n"
                    + "   suppe\n"
                    + "  </div> \n"
                    + "  <div>\n"
                    + "   &nbsp;\n"
                    + "  </div>\n"
                    + " </body>\n"
                    + "</html>"
                ;

                try {
                    TagNode htmlNode = HTML_CLEANER.clean(html);
                    StringWriter writer = new StringWriter();
                    SERIALIZER.write(htmlNode, writer, "UTF-8");
                    String cleanedHtml = writer.getBuffer().toString();
                    assertNotNull(cleanedHtml);
                    Matcher matcher = uidPattern.matcher(cleanedHtml);
                    if (onlyDetectForeignMarkers) {
                        if (matcher.find()) {
                            assertEquals("Cleaned HTML contains foreign marker", marker, matcher.group());
                        }
                    } else {
                        assertTrue("Cleaned HTML contains no marker", matcher.find());
                        assertEquals("Cleaned HTML contains foreign marker", marker, matcher.group());
                        assertTrue("Cleaned HTML appears to be too short", cleanedHtml.length() > 600);
                        assertTrue("Cleaned HTML appears to be too long", cleanedHtml.length() < 700);
                    }
                } catch (AssertionError e) {
                    errors.add(e);
                    break;
                } catch (RuntimeException e) {
                    // we want to find assertion errors
                    continue;
                } catch (IOException e) {
                    fail(e.getMessage());
                }
            }
        }