class TestUser def is_ok? true end def receive_message yield("user", "message") end def &(other) test_user_group = TestUserGroup.new(self) test_user_group << other test_user_group end end class TestUserGroup attr_accessor :test_users def initialize(user) @test_users = [user] end def <<(other) (@test_users ||= []) << other end def &(other) <<(other) end def method_missing(method, *args, &block) result = [] @test_users.each do |test_user| result << test_user.send(method, *args, &block) end result end end