private_methods(false) changes behavior based on singleton class allocation
class Module prepend Module.new end module Foo end p Foo.private_methods(false) # => [:remove_const, :method_added, :method_removed, :method_undefined, :prepend_features, :extend_object, :refine, :using, :append_features, :initialize, :initialize_clone, :initialize_copy, :public, :private, :module_function, :protected, :included, :extended, :prepended] Foo.singleton_class p Foo.private_methods(false) # => 
I have no idea what is causing this, but I tested it and it looks like this goes back to at least 2.1.5. It looks like before the singleton class is allocated
private_methods(false) returns a whole host of methods, while after it returns the expected output. Any help/advice would be appreciated.