def value(name_in = nil)
      # Just a normal lookup -- return the value
      return @value if name_in.nil?

      # Structured lookup returns nil unless the fact is actually structured.
      return unless @value.is_a?(Hash)

      # Dig into the hash to pull out the desired value.
      pointer = @value
      parts = name_in.split("::")
      last_part = parts.pop

      parts.each do |part|
        return unless pointer[part].is_a?(Hash)
        pointer = pointer[part]
      end

      pointer[last_part]
    end
def value(name_in = nil)
      # Just a normal lookup -- return the value
      return @value if name_in.nil?

      # Structured lookup returns nil unless the fact is actually structured.
      return unless @value.is_a?(Hash)

      # Dig into the hash to pull out the desired value.
      pointer = @value
      parts = name_in.split("::")
      last_part = parts.pop

      parts.each do |part|
        return unless pointer[part].is_a?(Hash)
        pointer = pointer[part]
      end

      pointer[last_part]
    end
Constructor.

 name  - The String naming the fact.
 value - The arbitrary object with the value of the fact.
 Get the value of the fact. If the name is specified, this will dig into a structured fact to pull
 out the value within the structure.

 name_in - An optional String to dig into the structure (formatted with :: indicating hash delimiters)

 Returns the value of the fact.