anchor.diff:      @entries.length == 0
   
     ###**
  -  Serializes request params from the given `<form>`.
  +  Constructs a new `up.Params` instance from the given `<form>`.
   
     The returned params may be passed as `{ params }` option to
     [`up.request()`](/up.request) or [`up.replace()`](/up.replace).
   
  -  The serialized params will include the form's submit button, if that
  -  button as a `name` attribute.
  -
  -  \#\#\#\# Example
  +  The constructed `up.Params` will include exactly those form values that would be
  +  included in a regular form submission. In particular:
  +
  +  - All `<input>` types are suppported
  +  - Field values are usually strings, but an `<input type="file">` will produce
  +    [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File) values.
  +  - An `<input type="radio">` or `<input type="checkbox">` will only be added if they are `[checked]`.
  +  - An `<select>` will only be added if at least one value is `[checked]`.
  +  - If passed a `<select multiple>` or `<input type="file" multiple>`, all selected values are added.
  +    If passed a `<select multiple>`, all selected values are added.
  +  - Fields that are `[disabled]` are ignored
  +  - Fields without a `[name]` attribute are ignored.
  +  - The serialized params will include the form's submit button, if that
  +    button as a `name` attribute.
  +
  +  \#\#\# Example
   
     Given this HTML form:
   
         <form>
  -        <input type="text" name="name" value="Foo Bar">
           <input type="text" name="email" value="foo@bar.com">
  +        <input type="password" name="pass" value="secret">
         </form>
   
     This would serialize the form into an array representation:
   
         var params = up.params.fromForm('input[name=email]')
  -
  -      // params is now: [
  -      //   { name: 'name', value: 'Foo Bar' },
  -      //   { name: 'email', value: 'foo@bar.com' }
  -      // ]
  -
  -  @function up.params.fromForm
  +      var email = params.get('email') // email is now 'foo@bar.com'
  +      var pass = params.get('pass') // pass is now 'secret'
  +
  +  @function up.Params.fromForm
     @param {Element|jQuery|string} form
  -  @return {Array}
  +    A `<form>` element or a selector that matches a `<form>` element.
  +  @return {up.Params}
  +    A new `up.Params` instance with values from the given form.
     @experimental
     ###
     @fromForm: (form) ->
  
positive.code:       @fromFields(fields)
  
    ###**
    Serializes request params from a one or more [input fields](/up.form.config#config.fields).
    To serialize an entire form, use [`up.params.fromForm()`](/up.params.fromForm).
  
    Note that some fields may produce multiple params, such as `<select multiple>`.
  
    \#\#\#\# Example
  
    Given this HTML form:
  
        <form>
          <input type="text" name="email" value="foo@bar.com">
          <input type="password" name="password">
        </form>
  
    This would retrieve request parameters from the `email` field:
  
        var params = up.params.fromField('input[name=email]')
  
        // params is now: [{ name: 'email', value: 'foo@bar.com' }]
  
    @function up.params.fromField
    @param {Element|List<Element>|jQuery} fields
    @return {up.Params}
    @experimental
  
negative.code:     entry?.value
  
    ###**
    Returns an array of all param values with the given `name`.
  
    Returns an empty array if no param value with that name is set.
  
    @function up.Params#getAll
    @param {string} name
    @return {Array}
      An array of all values with the given name.
    ###
    getAll: (name) ->
      if @isArrayKey(name)
  