    # File lib/rubygems/source_info_cache.rb, line 333
      def try_file(path)
        return path if File.writable? path
        return nil if File.exist? path

        dir = File.dirname path

        unless File.exist? dir then
          begin
            FileUtils.mkdir_p dir
          rescue RuntimeError, SystemCallError
            return nil
          end
        end

        return path if File.writable? dir

        nil
      end