# File lib/flexmock/mock_container.rb, line 119
119:     def flexmock(*args)
120:       name = nil
121:       quick_defs = {}
122:       domain_obj = nil
123:       safe_mode = false
124:       model_class = nil
125:       while ! args.empty?
126:         case args.first
127:         when :base, :safe
128:           safe_mode = (args.shift == :safe)
129:           domain_obj = args.shift
130:         when :model
131:           args.shift
132:           model_class = args.shift
133:         when String, Symbol
134:           name = args.shift.to_s
135:         when Hash
136:           quick_defs = args.shift
137:         else
138:           domain_obj = args.shift
139:         end
140:       end
141:       raise UsageError, "a block is required in safe mode" if safe_mode && ! block_given?
142: 
143:       if domain_obj
144:         mock = ContainerHelper.make_partial_proxy(self, domain_obj, name, safe_mode)
145:         result = domain_obj
146:       elsif model_class
147:         id = ContainerHelper.next_id
148:         result = mock = FlexMock.new("#{model_class}_#{id}", self)
149:       else
150:         result = mock = FlexMock.new(name || "unknown", self)
151:       end
152:       mock.should_receive(quick_defs)
153:       yield(mock) if block_given?
154:       flexmock_remember(mock)
155:       ContainerHelper.add_model_methods(mock, model_class, id) if model_class
156:       result
157:     end