On Mon, 4 Apr 2005, David A. Black wrote:
> I can offer one observation that might account for some of this:
>
> "singleton_methods(true)" means "singleton methods on this object or,
> if the object is a Class, this object and its ancestral classes."  For
> example:
[.....]

Thanks for your answer. I think I understand your point.

To find out how the 4 different cases (from my earlier mail) occurs 
in the Ruby builting classes/modules, I looked for classes/modules 
with methods detected in each of the four categories. I only found 
two such classes/modules: File and SystemCallError.

Below I have collected examples of methods introduced in each of the 
four cases (note that the four cases gives increasing sets of 
methods, so File.open is returned in *all but the first* cases, it 
is just *introduced* in the second case (i.e. by 
"singleton_methods(true)"):

>> 
>>    - methods(false) and singleton_methods(false)
>>      give the same result
>>

   - File.rename
   - SystemCallError.===

>>    - singleton_methods(true)
>>      gives a unique result
>>

   - File.open
   - SystemCallError.exception

>>    - public_methods(false)
>>      gives a unique result
>>

   - File.superclass
   - SystemCallError.new

>>    - methods(true) and public_methods(true)
>>      give the same result
>>

   - File.name
   - SystemCallError.dup


So the classes File and SystemCallError have methods in all 
categories (1-2-3-4). Among the other classes/modules, the following 
cases also occurs:

     1-3-4    e.g. Hash
     2-3-4    e.g. Bignum
     3-4      e.g. String


Maybe this was just a bunch of useless statistics ....,
but I learned something from if myself at least :)


/Johan Holmberg