original_string: public function run($destination, $source, $default = null)
      {
          $result = null;
  
          if (is_object($destination) && is_object($source) && get_class($destination) == get_class($source)) {
              $result = $this->mergeObject($destination, $source);
          } elseif (is_array($source) && is_array($destination)) {
              $result = $this->mergeArray($destination, $source);
          } elseif (!is_null($source) && $source !== $default) {
              $result = $source;
          }
  
          return $result;
      }
code: public function run($destination, $source, $default = null)
      {
          $result = null;
  
          if (is_object($destination) && is_object($source) && get_class($destination) == get_class($source)) {
              $result = $this->mergeObject($destination, $source);
          } elseif (is_array($source) && is_array($destination)) {
              $result = $this->mergeArray($destination, $source);
          } elseif (!is_null($source) && $source !== $default) {
              $result = $source;
          }
  
          return $result;
      }
code_tokens: public function run ( $ destination , $ source , $ default = null ) { $ result = null ; if ( is_object ( $ destination ) && is_object ( $ source ) && get_class ( $ destination ) == get_class ( $ source ) ) { $ result = $ this -> mergeObject ( $ destination , $ source ) ; } elseif ( is_array ( $ source ) && is_array ( $ destination ) ) { $ result = $ this -> mergeArray ( $ destination , $ source ) ; } elseif ( ! is_null ( $ source ) && $ source !== $ default ) { $ result = $ source ; } return $ result ; }
docstring: Merges the source on top of the destination and returns the result.
  
  @param mixed $destination The destination variable that will be overwritten with the data from the source.
  @param mixed $source      The source variable that should be merged over the destination.
  @param mixed $default     For normal variables; only replace that variable if the provided source does
  not equal this value.
  
  @return mixed the merged variable.
docstring_tokens: Merges the source on top of the destination and returns the result .