# File lib/couchrest/mixins/callbacks.rb, line 171
      def start(key = nil, options = {})
        object, terminator = (options || {}).values_at(:object, :terminator)
        
        return if key && !object.send("_one_time_conditions_valid_#{@callback_id}?")
        
        terminator ||= false
        
        # options[0] is the compiled form of supplied conditions
        # options[1] is the "end" for the conditional
                
        if @kind == :before || @kind == :around
          if @kind == :before
            # if condition    # before_save :filter_name, :if => :condition
            #   filter_name
            # end
            filter = "unless halted\nresult = \#{@filter}\nhalted ||= (\#{terminator})\nend\n"
            [@compiled_options[0], filter, @compiled_options[1]].compact.join("\n")
          else
            # Compile around filters with conditions into proxy methods
            # that contain the conditions.
            #
            # For `around_save :filter_name, :if => :condition':
            #
            # def _conditional_callback_save_17
            #   if condition
            #     filter_name do
            #       yield self
            #     end
            #   else
            #     yield self
            #   end
            # end
            
            name = "_conditional_callback_#{@kind}_#{next_id}"
            txt = "def \#{name}(halted)\n\#{@compiled_options[0] || \"if true\"} && !halted\n\#{@filter} do\nyield self\nend\nelse\nyield self\nend\nend\n"
            @klass.class_eval(txt)
            "#{name}(halted) do"
          end
        end
      end