### Question:
NodeAdapter implements GriffonPivotAdapter, org.apache.pivot.wtk.text.NodeListener { public void offsetChanged(org.apache.pivot.wtk.text.Node arg0, int arg1) { if (offsetChanged != null) { offsetChanged.call(arg0, arg1); } }  CallableWithArgs<Void> getRangeInserted(); CallableWithArgs<Void> getRangeRemoved(); CallableWithArgs<Void> getNodeInserted(); CallableWithArgs<Void> getNodesRemoved(); CallableWithArgs<Void> getOffsetChanged(); CallableWithArgs<Void> getParentChanged(); void setRangeInserted(CallableWithArgs<Void> rangeInserted); void setRangeRemoved(CallableWithArgs<Void> rangeRemoved); void setNodeInserted(CallableWithArgs<Void> nodeInserted); void setNodesRemoved(CallableWithArgs<Void> nodesRemoved); void setOffsetChanged(CallableWithArgs<Void> offsetChanged); void setParentChanged(CallableWithArgs<Void> parentChanged); void rangeInserted(org.apache.pivot.wtk.text.Node arg0, int arg1, int arg2); void rangeRemoved(org.apache.pivot.wtk.text.Node arg0, int arg1, int arg2); void nodeInserted(org.apache.pivot.wtk.text.Node arg0, int arg1); void nodesRemoved(org.apache.pivot.wtk.text.Node arg0, org.apache.pivot.collections.Sequence<Node> arg1, int arg2); void offsetChanged(org.apache.pivot.wtk.text.Node arg0, int arg1); void parentChanged(org.apache.pivot.wtk.text.Node arg0, org.apache.pivot.wtk.text.Element arg1);  }### Answer:
@Test public void testOffsetChanged() { final boolean[] invoked = new boolean[1]; CallableWithArgs<Void> callable = new CallableWithArgs<Void>() { public Void call(Object... args) { invoked[0] = true; return null; } }; assertNull(adapter.getOffsetChanged()); adapter.offsetChanged(null, 0); assertFalse(invoked[0]); adapter.setOffsetChanged(callable); adapter.offsetChanged(null, 0); assertTrue(invoked[0]); }