### Question:
JmsProducerInfo extends JmsAbstractResource implements Comparable<JmsProducerInfo> { @Override public void visit(JmsResourceVistor vistor) throws Exception { vistor.processProducerInfo(this); } JmsProducerInfo(JmsProducerId producerId);  JmsProducerInfo(JmsProducerId producerId, JmsMessageIDBuilder messageIDBuilder); JmsProducerInfo copy(); void copy(JmsProducerInfo info); @Override JmsProducerId getId(); JmsSessionId getParentId(); JmsDestination getDestination(); void setDestination(JmsDestination destination); boolean isPresettle(); void setPresettle(boolean presettle); JmsMessageIDBuilder getMessageIDBuilder(); @Override String toString(); @Override int hashCode(); @Override boolean equals(Object obj); @Override int compareTo(JmsProducerInfo other); @Override void visit(JmsResourceVistor vistor);  }### Answer:
@Test public void testVisit() throws Exception { final JmsProducerInfo first = createPorducerInfo(firstId); final AtomicBoolean visited = new AtomicBoolean(); first.visit(new JmsDefaultResourceVisitor() { @Override public void processProducerInfo(JmsProducerInfo info) { assertEquals(first, info); visited.set(true); } }); assertTrue(visited.get()); }