# File lib/versionomy/value.rb, line 70
    def initialize(values_, format_, unparse_params_=nil)
      unless values_.kind_of?(::Hash) || values_.kind_of?(::Array)
        raise ::ArgumentError, "Expected hash or array but got #{values_.class}"
      end
      @_format = format_
      @_unparse_params = unparse_params_
      @_field_path = []
      @_values = {}
      values_ = _canonicalize_values_hash(values_) if values_.kind_of?(::Hash)
      field_ = @_format.schema.root_field
      while field_
        value_ = values_.kind_of?(::Hash) ? values_[field_.name] : values_.shift
        value_ = value_ ? field_.canonicalize_value(value_) : field_.default_value
        @_field_path << field_
        @_values[field_.name] = value_
        field_ = field_.child(value_)
      end
      modules_ = @_format.schema.modules
      extend(*modules_) if modules_.size > 0
    end