An
Ackable used to ack other
Ackables when a set of children ackables are all acknowledged. This is
useful when forking a record, as we don't want to ack the original record until all children have been acked.
Usage:
HierarchicalAckable ackable = new HierarchicalAckable(list_of_parent_ackables);
Ackable childAckable = ackable.newChildAckable();
ackable.close(); // Must close HierarchicalAckable to indicate no more children will be created.
childAckable.ack(); // When acking all children, parents will be acked.