# File lib/pathname2.rb, line 670
   def +(string)
      unless string.kind_of?(Pathname)
         string = self.class.new(string)
      end

      # Any path plus "." is the same directory
      return self if string == "."
      return string if self == "."
      
      # Use the builtin PathAppend() function if on Windows - much easier
      if @win
         buf = 0.chr * MAXPATH
         buf[0..self.length-1] = self
         PathAppend(buf, string)
         buf = buf.split("\0").first
         return self.class.new(buf) # PathAppend cleans automatically
      end
      
      # If the string is an absolute directory, return it
      return string if string.absolute?

      array = to_a + string.to_a
      new_string = array.join(@sep)
      
      unless relative? || @win
         temp = @sep + new_string # Add root path back if needed
         new_string.replace(temp)
      end
      
      self.class.new(new_string).clean
   end