def deep_sym(obj)
      if obj.is_a? Hash
        return obj.inject({}) do |memo, (k, v)|
          memo[k.to_sym] = deep_sym(v)
          memo
        end
      elsif obj.is_a? Array
        return obj.inject([]) do |memo, el|
          memo << deep_sym(el)
          memo
        end
      elsif obj.respond_to? :to_sym
        return obj.to_sym
      else
        return nil
      end
    end
def deep_sym(obj)
      if obj.is_a? Hash
        return obj.inject({}) do |memo, (k, v)|
          memo[k.to_sym] = deep_sym(v)
          memo
        end
      elsif obj.is_a? Array
        return obj.inject([]) do |memo, el|
          memo << deep_sym(el)
          memo
        end
      elsif obj.respond_to? :to_sym
        return obj.to_sym
      else
        return nil
      end
    end
Transform the given hash recursively by turning all of its string keys
 and values into symbols.

 Symbols are expected in the enrichment classes, and we will usually be
 dealing with values that have been deserialized from JSON.