title: Difference between Kernel#yield_self, yield(self), Kernel#then and Object#tap in Ruby?
body: <p>Ruby 2.5 introduced <code>#yield_self</code> method.
  Ruby 2.6 introduced <code>#then</code> method.</p>
  <p>What is the difference between <code>yield_self</code>, <code>yield(self)</code>, <code>then</code> and the existing <code>Object#tap</code> method?</p>