# File lib/mongoid/persistence/insertion.rb, line 21
      def prepare(&block)
        document.tap do |doc|
          unless validating? && document.invalid?(:create)
            result = doc.run_callbacks(:save) do
              doc.run_callbacks(:create) do
                yield(doc)
                doc.new_record = false
                doc.reset_persisted_children and true
              end
            end

            unless result == false
              doc.move_changes
              Threaded.clear_options!
            end
          end
        end
      end