original_string: protected function mergeComposerJsonFiles(string $composer_file, \stdClass $original_composer, \stdClass $new_composer, callable $callback = NULL) {
      $new_composer = $this->mergeComposerObjects($original_composer, $new_composer, $callback);
      $composer_content = file_get_contents($composer_file);
      $replace_composer = json_decode($composer_content);
      $changes = $this->calculateRequirementChanges($replace_composer, $new_composer);
      if (file_put_contents($composer_file, json_encode($new_composer, JSON_PRETTY_PRINT)) !== FALSE) {
        return $changes;
      }
    }
code: protected function mergeComposerJsonFiles(string $composer_file, \stdClass $original_composer, \stdClass $new_composer, callable $callback = NULL) {
      $new_composer = $this->mergeComposerObjects($original_composer, $new_composer, $callback);
      $composer_content = file_get_contents($composer_file);
      $replace_composer = json_decode($composer_content);
      $changes = $this->calculateRequirementChanges($replace_composer, $new_composer);
      if (file_put_contents($composer_file, json_encode($new_composer, JSON_PRETTY_PRINT)) !== FALSE) {
        return $changes;
      }
    }
code_tokens: protected function mergeComposerJsonFiles ( string $ composer_file , \ stdClass $ original_composer , \ stdClass $ new_composer , callable $ callback = NULL ) { $ new_composer = $ this -> mergeComposerObjects ( $ original_composer , $ new_composer , $ callback ) ; $ composer_content = file_get_contents ( $ composer_file ) ; $ replace_composer = json_decode ( $ composer_content ) ; $ changes = $ this -> calculateRequirementChanges ( $ replace_composer , $ new_composer ) ; if ( file_put_contents ( $ composer_file , json_encode ( $ new_composer , JSON_PRETTY_PRINT ) ) !== FALSE ) { return $ changes ; } }
docstring: Merges the original composer file with a new composer file.
  
  This ensures that the composer.json file that is going to be installed
  will have all the appropriate requirements documented by the git
  repository that is kept up to date by the client.
  
  @param string $composer_file
  The absolute path to the composer file to write.
  @param \stdClass $original_composer
  The original composer.json file before it was removed as a php object.
  @param \stdClass $new_composer
  The new composer.json file as a php object.
  @param callable $callback
  A callback if necessary to customize the composer object further.
  
  @return array
docstring_tokens: Merges the original composer file with a new composer file .