### Question:
CloneNodeCommand extends AbstractGraphCompositeCommand { @Override public CommandResult<RuleViolation> undo(GraphCommandExecutionContext context) { return new SafeDeleteNodeCommand(clone).execute(context); } protected  CloneNodeCommand();  CloneNodeCommand(final @MapsTo("candidate") Node candidate, final @MapsTo("parentUuid") String parentUuid);  CloneNodeCommand(final Node candidate, final String parentUuid, final Point2D position, final Consumer<Node> callback, final ManagedInstance<ChildrenTraverseProcessor> childrenTraverseProcessor);  CloneNodeCommand(final Node candidate, final String parentUuid, final Point2D position, final Consumer<Node> callback); @Override CommandResult<RuleViolation> execute(final GraphCommandExecutionContext context); List<CommandResult<RuleViolation>> processChildrenNodes(GraphCommandExecutionContext context); @Override CommandResult<RuleViolation> undo(GraphCommandExecutionContext context); Node<View, Edge> getClone(); Node<Definition, Edge> getCandidate(); List<Command<GraphCommandExecutionContext, RuleViolation>> getChildrenCommands();  }### Answer:
@Test public void testUndo() throws Exception { testInitialize(); cloneNodeCommand.undo(graphCommandExecutionContext); verify(graphIndex, times(1)).removeNode(clone); }