def call(*tms)
      unless @arguments.empty?
        tms.empty? or raise(ArgumentError, 'Op arguments is already set, use call()')
        tms = @arguments
      end
      res = [*tms].flatten.map(&method(:perform))
      tms.count == 1 && Util.timey?(tms.first) ? res.first : res
    end
def call(*tms)
      unless @arguments.empty?
        tms.empty? or raise(ArgumentError, 'Op arguments is already set, use call()')
        tms = @arguments
      end
      res = [*tms].flatten.map(&method(:perform))
      tms.count == 1 && Util.timey?(tms.first) ? res.first : res
    end
Performs op. If an Op was created with arguments, just performs all
 operations on them and returns the result. If it was created without
 arguments, performs all operations on arguments provided to `call`.

 @param tms one, or several, or an array of time-y values; should not
   be passed if Op was created with arguments.
 @return [Time,Date,DateTime,Array] one, or an array of processed arguments