This method is called recursively (ie deeply) by default
so there doesn't seem to be a good reason to deepcopy over
and over and over at every recusion level especially since
a new output dictionary is getting created anyway.
Change-Id: I644ef881e487c06dc4db77d60cfe765b0e59b547