# File lib/fssm/pathname.rb, line 61
    def cleanpath!
      parts = to_a
      final = []

      parts.each do |part|
        case part
          when DOT     then
            next
          when DOT_DOT then
            case final.last
              when ROOT    then
                next
              when DOT_DOT then
                final.push(DOT_DOT)
              when nil     then
                final.push(DOT_DOT)
              else
                final.pop
            end
          else
            final.push(part)
        end
      end

      replace(final.empty? ? DOT : self.class.join(*final))
    end