static class RangeTraverser extends CallbackImpl { List starts = new ArrayList(); List ends = new ArrayList(); List refs = new ArrayList(); String startElement; String endElement; String refElement; RangeTraverser(String startElement, String endElement, String refElement) { this.startElement = "org.docx4j.wml." + startElement; this.endElement = "org.docx4j.wml." + endElement; this.refElement = "org.docx4j.wml." + refElement; } @Override public List apply(Object o) { if (o.getClass().getName().equals(startElement)) starts.add(o); if (o.getClass().getName().equals(endElement)) ends.add(o); if (o.getClass().getName().equals(refElement)) refs.add(o); return null; } }