# File lib/fakefs/fileutils.rb, line 61
    def cp_r(src, dest)
      # This error sucks, but it conforms to the original Ruby
      # method.
      raise "unknown file type: #{src}" unless dir = FileSystem.find(src)

      new_dir = FileSystem.find(dest)

      if new_dir && !File.directory?(dest)
        raise Errno::EEXIST, dest
      end

      if !new_dir && !FileSystem.find(dest+'/../')
        raise Errno::ENOENT, dest
      end

      # This last bit is a total abuse and should be thought hard
      # about and cleaned up.
      if new_dir
        if src[-2..-1] == '/.'
          dir.values.each{|f| new_dir[f.name] = f.clone(new_dir) }
        else
          new_dir[dir.name] = dir.entry.clone(new_dir)
        end
      else
        FileSystem.add(dest, dir.entry.clone)
      end
    end