# File lib/fakefs/pathname.rb, line 436
      def plus(path1, path2) # -> path
        prefix2 = path2
        index_list2 = []
        basename_list2 = []
        while (r2 = chop_basename(prefix2))
          prefix2, basename2 = r2
          index_list2.unshift prefix2.length
          basename_list2.unshift basename2
        end

        return path2 if prefix2 != ''

        prefix1 = path1
        while (r1 = chop_basename(prefix1))
          while !basename_list2.empty? && basename_list2.first == '.'
            index_list2.shift
            basename_list2.shift
          end

          prefix1, basename1 = r1
          next if basename1 == '.'
          if basename1 == '..' ||
             basename_list2.empty? ||
             basename_list2.first != '..'
            prefix1 += basename1
            break
          end
          index_list2.shift
          basename_list2.shift
        end

        r1 = chop_basename(prefix1)
        if !r1 && /#{SEPARATOR_PAT}/o =~ File.basename(prefix1)
          while !basename_list2.empty? && basename_list2.first == '..'
            index_list2.shift
            basename_list2.shift
          end
        end

        if !basename_list2.empty?
          suffix2 = path2[index_list2.first..-1]
          r1 ? File.join(prefix1, suffix2) : prefix1 + suffix2
        else
          r1 ? prefix1 : File.dirname(prefix1)
        end
      end