Looking at the code in more detail, I agree that the `deep_copy` calls are not necessary, but for a different reason:

  * In the `@configuration` case, the value comes from the following line:

    ```ruby
    @configuration = Ops.get_map(@configurations, @conf, {})
    ```

    This by itself [ensures](https://github.com/yast/yast-ruby-bindings/blob/1334ab04f0c985b0b39f8eee849702fe9baffba4/src/ruby/yast/ops.rb#L90) `@configuration` is a deep copy of an item in `@conigurations`.

  * In the `c` case, the value is already a copy because it is a block agrument and `maplist` [copies values passed as block arguments](https://github.com/yast/yast-ruby-bindings/blob/1334ab04f0c985b0b39f8eee849702fe9baffba4/src/ruby/yast/builtins.rb#L123).

The block return value argument isn't necessarily valid, because `maplist` does not `deep_copy` block return values by itself. But from the use of `@configuration` and `@configurations` variables it seems the absence of copying wouldn't matter anyway here (I checked only casually). So you may be right after all :-)