Hi Pavel thanks for your help. I found my error to be due to the lines
} else { system.debug('before new walkthrough'); walkThroughReservationNode(childNode); }
This causes the full walkthrough to occur again thus causing the updateBookingRecordWithConfirmationResponse(reservationConfirmationWrapper); line to be called each time which is not what I should have done.
Thanks for your help.