def attributes(attribute_hash)
      attribute_hash.map do |dsl_key, value_schema|
        optional = dsl_key.is_a?(OptionalWrapper)
        key = optional ? dsl_key.key : dsl_key
        Schemas::FixedHash::Attribute.new(
          key, inconvenience(value_schema), optional,
        )
      end
    end
def attributes(attribute_hash)
      attribute_hash.map do |dsl_key, value_schema|
        optional = dsl_key.is_a?(OptionalWrapper)
        key = optional ? dsl_key.key : dsl_key
        Schemas::FixedHash::Attribute.new(
          key, inconvenience(value_schema), optional,
        )
      end
    end
Turns an "attribute hash" into an array of
 {Schemas::FixedHash::Attribute}. Primarily for use with
 {Schemas::FixedHash#merge}.

 @param attribute_hash [Hash<key, schema>] A hash of keys to subschemas.
   The values of this hash must be schema objects.
   The keys should be the exact keys expected in the represented `Hash`
   (`Strings`, `Symbols`, whatever). Keys can be wrapped with {#optional}
   to indicate that they can be missing from the represented `Hash`.
 @return [Array<Schemas::FixedHash::Attribute>]

 @see Schemas::FixedHash#merge

 @example (see Schemas::FixedHash#merge)