Actually, seems you could just do 

```ruby
hash = d.dereference_hash_descriptor(ids_registry, external_descriptor_documents)
```
I typically only use .tap when I want to return the value but do somethings first vs.

```ruby
def something
  val = ###
  # do stuff based on val
  val
end
```