public function mergeWith(self $specs): self
    {
        $clone = clone $this;
        if (null === $clone->constructor) {
            $clone->constructor = $specs->constructor;
        }
        
        $clone->properties = $this->properties->mergeWith($specs->properties);
        $clone->calls = $this->calls->mergeWith($specs->calls);

        return $clone;
    }
public function mergeWith(self $specs): self
    {
        $clone = clone $this;
        if (null === $clone->constructor) {
            $clone->constructor = $specs->constructor;
        }
        
        $clone->properties = $this->properties->mergeWith($specs->properties);
        $clone->calls = $this->calls->mergeWith($specs->calls);

        return $clone;
    }
public function mergeWith ( self $ specs ) : self { $ clone = clone $ this ; if ( null === $ clone -> constructor ) { $ clone -> constructor = $ specs -> constructor ; } $ clone -> properties = $ this -> properties -> mergeWith ( $ specs -> properties ) ; $ clone -> calls = $ this -> calls -> mergeWith ( $ specs -> calls ) ; return $ clone ; }
Creates a new instance to which the given specs have been merged. In case of conflicts, the existing values are
kept.
Creates a new instance to which the given specs have been merged . In case of conflicts the existing values are kept .