> This should return nil.  Otherwise, refinements can break code which
doesn't expect the refined behavior.

Ok. Makes sense.

> I don't understand why it's worse.

Only worse in that case if you had not said `nil`.

Since you did say `nil`, then what about:

    class S
      def foo
        "foo"
      end
      def bar
        "bar"
      end
      def foobar
        foo + bar
      end
    end

    module R
      refine S do
        def bar
          "bar!"
        end
      end
    end

    class C < S
      using R
      alias :foobar! :foobar
      def foobar?
        foo + bar
      end
      def brainfart1
        c = C.new
        c.foobar! == c.foobar?
      end
      def brainfart2
        c = C.new
        s = S.new
        c.foobar! == s.foobar
      end
      def brainfart3
        c = C.new
        s = S.new
        c.bar == s.bar
      end

    end

    C.new.brainfart1  #=> ?
    C.new.brainfart2  #=> ?
    C.new.brainfart3  #=> ?