code: func (a *AskPassCredentialHelper) Fill(what Creds) (Creds, error) {
  	u := &url.URL{
  		Scheme: what["protocol"],
  		Host:   what["host"],
  		Path:   what["path"],
  	}
  
  	creds := make(Creds)
  
  	username, err := a.getValue(what, credValueTypeUsername, u)
  	if err != nil {
  		return nil, err
  	}
  	creds["username"] = username
  
  	if len(username) > 0 {
  		// If a non-empty username was given, add it to the URL via func
  		// 'net/url.User()'.
  		u.User = url.User(creds["username"])
  	}
  
  	password, err := a.getValue(what, credValueTypePassword, u)
  	if err != nil {
  		return nil, err
  	}
  	creds["password"] = password
  
  	return creds, nil
  }
docs: // Fill implements fill by running the ASKPASS program and returning its output
  // as a password encoded in the Creds type given the key "password".
  //
  // It accepts the password as coming from the program's stdout, as when invoked
  // with the given arguments (see (*AskPassCredentialHelper).args() below)./
  //
  // If there was an error running the command, it is returned instead of a set of
  // filled credentials.
  //
  // The ASKPASS program is only queried if a credential was not already
  // provided, i.e. through the git URL