original_string: public function merge($collection, callable $merger, $default = null)
      {
          $array = $this->collection_to_array($collection);
          foreach ($array as $key => $value) {
              $current = $this->get($key, $default);
              $this->set($key, $merger($current, $value));
          }
          return $this;
      }
code: public function merge($collection, callable $merger, $default = null)
      {
          $array = $this->collection_to_array($collection);
          foreach ($array as $key => $value) {
              $current = $this->get($key, $default);
              $this->set($key, $merger($current, $value));
          }
          return $this;
      }
code_tokens: public function merge ( $ collection , callable $ merger , $ default = null ) { $ array = $ this -> collection_to_array ( $ collection ) ; foreach ( $ array as $ key => $ value ) { $ current = $ this -> get ( $ key , $ default ) ; $ this -> set ( $ key , $ merger ( $ current , $ value ) ) ; } return $ this ; }
docstring: Merge the given collection into this map.
  
  The merger callable decides how to merge the current map's value with
  the given collection's value.  The merger callable receives two
  arguments:
  - This map's value at the given key
  - The collection's value at the given key
  
  If the current map does not have a value for a key in the collection,
  then the default value is assumed.
  
  @param Map|Arrayable|Jsonable|Traversable|object|array $collection
  @param callable $merger
  @param mixed $default
  @return $this
  @api
docstring_tokens: Merge the given collection into this map .