
    i1 : g = method(Options => {});

    i2 : g (ZZ, ZZ) := List => (opts) -> (m, n) -> foo

    o2 = List => {*Function[stdio:2:29-2:42]*}

    o2 : Option

    i3 : g (QQ, QQ) := (opts) -> (m, n) -> foo
    stdio:3:12:(3):[0]: error: expected method for binary operator to be a function of 2 variables

    i4 : methods g

    o4 = {}

    o4 : VerticalList


Internally, the difference between (opts)->(...) and opts->(...) is that the
former insists on the number of arguments being 1, and the latter doesn't.

So, our sanity checking code, which takes a function and plugs it in as a
method function, detects that, notices the discrepancy between 1 and 2 (the
number of arguments needed), and signals an error.  In line 2 above and in your
case, where you (redundantly) give a typical return value type of List, the
error message gets ignored, sigh.  In line 3, the error message survives, and
we see what the trouble is.

So, our sanity checking code has to be taught that method functions with
options are not the same as method functions without options.  Meanwhile, write
opts instead of (opts).
