def _add(v: nil, dupit: nil, oc: nil, patch: {})
      unless _pairs?
        case
          when self.kind_of?(::Set)
          when self.kind_of?(::Array)
            self << _ob_maybe_repl(v: v, dupit: dupit, oc: oc, patch: patch)
          else
            raise DeepDiveException.new("Don't know how to add new elements for class #{self.class}")
        end
      else
        self[v.first] = _ob_maybe_repl(v: v.last, dupit: dupit, oc: oc, patch: patch)
      end
    end
def _add(v: nil, dupit: nil, oc: nil, patch: {})
      unless _pairs?
        case
          when self.kind_of?(::Set)
          when self.kind_of?(::Array)
            self << _ob_maybe_repl(v: v, dupit: dupit, oc: oc, patch: patch)
          else
            raise DeepDiveException.new("Don't know how to add new elements for class #{self.class}")
        end
      else
        self[v.first] = _ob_maybe_repl(v: v.last, dupit: dupit, oc: oc, patch: patch)
      end
    end
add a single element to the enumerable.
 You may pass a single parameter, or a key, value. In any case,
 all will added.

 Here all the logic will be present to handle the "special case"
 enumerables. Most notedly, Hash and Array will require special
 treatment.