whole_func_string: function PatchFunctionCode(old_node, change_log) {
      var new_info = old_node.corresponding_node.info;
      if (old_node.live_shared_function_infos) {
        old_node.live_shared_function_infos.forEach(function (old_info) {
          %LiveEditReplaceFunctionCode(new_info.raw_array,
                                       old_info.raw_array);
  
          // The function got a new code. However, this new code brings all new
          // instances of SharedFunctionInfo for nested functions. However,
          // we want the original instances to be used wherever possible.
          // (This is because old instances and new instances will be both
          // linked to a script and breakpoints subsystem does not really
          // expects this; neither does LiveEdit subsystem on next call).
          for (var i = 0; i < old_node.children.length; i++) {
            if (old_node.children[i].corresponding_node) {
              var corresponding_child_info =
                  old_node.children[i].corresponding_node.info.
                      shared_function_info;
  
              if (old_node.children[i].live_shared_function_infos) {
                old_node.children[i].live_shared_function_infos.
                    forEach(function (old_child_info) {
                      %LiveEditReplaceRefToNestedFunction(
                          old_info.info,
                          corresponding_child_info,
                          old_child_info.info);
                    });
              }
            }
          }
        });
  
        change_log.push( {function_patched: new_info.function_name} );
      } else {
        change_log.push( {function_patched: new_info.function_name,
            function_info_not_found: true} );
      }
    }
func_code_string: function PatchFunctionCode(old_node, change_log) {
      var new_info = old_node.corresponding_node.info;
      if (old_node.live_shared_function_infos) {
        old_node.live_shared_function_infos.forEach(function (old_info) {
          %LiveEditReplaceFunctionCode(new_info.raw_array,
                                       old_info.raw_array);
  
          // The function got a new code. However, this new code brings all new
          // instances of SharedFunctionInfo for nested functions. However,
          // we want the original instances to be used wherever possible.
          // (This is because old instances and new instances will be both
          // linked to a script and breakpoints subsystem does not really
          // expects this; neither does LiveEdit subsystem on next call).
          for (var i = 0; i < old_node.children.length; i++) {
            if (old_node.children[i].corresponding_node) {
              var corresponding_child_info =
                  old_node.children[i].corresponding_node.info.
                      shared_function_info;
  
              if (old_node.children[i].live_shared_function_infos) {
                old_node.children[i].live_shared_function_infos.
                    forEach(function (old_child_info) {
                      %LiveEditReplaceRefToNestedFunction(
                          old_info.info,
                          corresponding_child_info,
                          old_child_info.info);
                    });
              }
            }
          }
        });
  
        change_log.push( {function_patched: new_info.function_name} );
      } else {
        change_log.push( {function_patched: new_info.function_name,
            function_info_not_found: true} );
      }
    }
func_documentation_string: Replaces function's Code.