Just thought I would clarify this for others:
When you call method( :some-symbol) in an object instance method, that call is effectively equivalent to "new Lang.Method(self, :some-symbol)"
The docs for Method.initalize() say that initialize expects "Classdef of method" as the first parameter; however, the initialize function really requires an object as it's first parameter. (self is a reserved word in MonkeyC that refers to the current instance of the class that the currently executing method is a member of - roughly equivalent to 'this' in C++.) Note that you can create a method object that will invoke some method on some other object by using "new Lang.Method(some_other_object, :some-symbol)". Unfortunately, there doesn't appear to be any equivalent syntax / construct to refer to instance variables - but that can obviously be implemented by creating member functions for the variables you need to expose (wrap a system object with a new class if necessary).
Unfortunately, the docs give no indication if the Method object obtains a strong or weak reference on the target object instance.
As with many places in MonkeyC (but not all), :some-symbol can be a variable that holds an instance of Symbol. (And again it's really unfortunate that Symbol.toString() always returns the string 'Symbol': quite useless.) A notable place that doesn't accept a variable holding a Symbol object is the rhs of the 'has' operator, which is also really unfortunate - especially given that there is no way to trap a "symbol not found" error.
(The above all applies to SDK 1.2.2; not sure about any other version.)
-frank