@SuppressWarnings("unchecked")
  public Form<T> bind(
      Lang lang, TypedMap attrs, Map<String, String> data, String... allowedFields) {
    return bind(lang, attrs, data, Collections.emptyMap(), allowedFields);
  }
@SuppressWarnings("unchecked")
  public Form<T> bind(
      Lang lang, TypedMap attrs, Map<String, String> data, String... allowedFields) {
    return bind(lang, attrs, data, Collections.emptyMap(), allowedFields);
  }
@ SuppressWarnings ( "unchecked" ) public Form < T > bind ( Lang lang , TypedMap attrs , Map < String , String > data , String ... allowedFields ) { return bind ( lang , attrs , data , Collections . emptyMap ( ) , allowedFields ) ; }
Binds data to this form - that is, handles form submission.

@param lang used for validators and formatters during binding and is part of {@link
ValidationPayload}. Later also used for formatting when retrieving a field (via {@link
#field(String)} or {@link #apply(String)}) and for translations in {@link #errorsAsJson()}.
For these methods the lang can be change via {@link #withLang(Lang)}.
@param attrs will be passed to validators via {@link ValidationPayload}
@param data data to submit
@param allowedFields the fields that should be bound to the form, all fields if not specified.
@return a copy of this form filled with the new data
Binds data to this form - that is handles form submission .