There is a strange discrepancy here in the way method functions for f and g are called:

    i4 : X = new Type of List

    o4 = X

    o4 : Type

    i10 : f = method(Options => true,Dispatch => Thing)

    o10 = f

    o10 : FunctionClosure

    i11 : f X := o -> x -> [o,x]

    o11 = {*Function[stdio:11:10-11:21]*}

    o11 : FunctionClosure

    i12 : f new X

    o12 = [OptionTable{}, {}]

    o12 : Array

    i13 : g = method(Options => true)

    o13 = g

    o13 : MethodFunctionWithOptions

    i14 : g X := identity

    o14 = identity

    o14 : CompiledFunction

    i15 : g new X

    o15 = (OptionTable{}, {})

    o15 : Sequence
