# File lib/rspec/core/memoized_helpers.rb, line 344
        def its(attribute, &block)
          describe(attribute) do
            if Array === attribute
              let(:__its_subject) { subject[*attribute] }
            else
              let(:__its_subject) do
                attribute_chain = attribute.to_s.split('.')
                attribute_chain.inject(subject) do |inner_subject, attr|
                  inner_subject.send(attr)
                end
              end
            end

            def should(matcher=nil, message=nil)
              RSpec::Expectations::PositiveExpectationHandler.handle_matcher(__its_subject, matcher, message)
            end

            def should_not(matcher=nil, message=nil)
              RSpec::Expectations::NegativeExpectationHandler.handle_matcher(__its_subject, matcher, message)
            end

            example(&block)
          end
        end