# File lib/chef/knife/core/generic_presenter.rb, line 148
        def extract_nested_value(data, nested_value_spec)
          nested_value_spec.split(".").each do |attr|
            if data.nil?
              nil # don't get no method error on nil
            elsif data.respond_to?(attr.to_sym)
              data = data.send(attr.to_sym)
            elsif data.respond_to?(:[])
              data = data[attr]
            else
              data = begin
                data.send(attr.to_sym)
              rescue NoMethodError
                nil
              end
            end
          end
          ( !data.kind_of?(Array) && data.respond_to?(:to_hash) ) ? data.to_hash : data
        end