code: def _wrap(fn):
          
          def _func(*args):
              merged = None
              _args = []
              for arg in args:
                  if merged.__class__ != arg.__class__:
                      if merged is None:
                          merged = arg.__class__(None)
                      else:
                          merged = Value._merge_type(merged, arg)(None)
                  merged.merge(arg)
                  if isinstance(arg, Value):
                      arg = arg.value
                  _args.append(arg)
              merged.value = fn(*_args)
              return merged
          return _func
docs: Wrapper function to allow calling any function
          using Value objects as parameters.