def mergeable_autogenerated_operation?
      # the inner operation subject
      inner = nil
      @operations.reverse_each do |op|
        if inner and op.subject != inner.owner then
          # not a dependent
          return false
        end
        if op.type == :create then
          # innermost or owner create
          return (not op.subject.class.autogenerated_dependent_attributes.empty?)
        elsif op.type != :update then
          # not a save
          return false
        end
        # iterate to the scoping operation
        inner = op.subject
      end
      false
    end
def mergeable_autogenerated_operation?
      # the inner operation subject
      inner = nil
      @operations.reverse_each do |op|
        if inner and op.subject != inner.owner then
          # not a dependent
          return false
        end
        if op.type == :create then
          # innermost or owner create
          return (not op.subject.class.autogenerated_dependent_attributes.empty?)
        elsif op.type != :update then
          # not a save
          return false
        end
        # iterate to the scoping operation
        inner = op.subject
      end
      false
    end
A mergeable autogenerated operation is recursively defined as:
 * a create of an object with auto-generated dependents
 * an update of an auto-generated dependent in the context of a mergeable autogenerated operation

 @return [Boolean] whether the innermost operation conforms to the above criterion