def lut_read_from_cache(name)
      lut_write_to_cache(name) unless lut_cache_exists?(name)

      i   = 0
      lut = {}

      while item = lut_read_cache_item(name, i)
        # FIXME: merge will override existing values
        # lut.merge!(item) if item
        if item
          item.each do |k,v|
            if lut[k]
              v      = [v]      unless v.respond_to?(:concat)
              lut[k] = [lut[k]] unless lut[k].respond_to?(:concat)
              lut[k].concat(v)
            else
              lut[k] = v
            end
          end
        end

        i += 1
      end

      return lut
    end
def lut_read_from_cache(name)
      lut_write_to_cache(name) unless lut_cache_exists?(name)

      i   = 0
      lut = {}

      while item = lut_read_cache_item(name, i)
        # FIXME: merge will override existing values
        # lut.merge!(item) if item
        if item
          item.each do |k,v|
            if lut[k]
              v      = [v]      unless v.respond_to?(:concat)
              lut[k] = [lut[k]] unless lut[k].respond_to?(:concat)
              lut[k].concat(v)
            else
              lut[k] = v
            end
          end
        end

        i += 1
      end

      return lut
    end
Reads a complete lut from cache
 HACK: this still looks ugly somehow