Program: 188604
Project: 188604
Buggy source:
/** 
 * Create a new user data panel
 * @param visible
 * @param editmode
 * @param enableGroupSelect
 * @param enablePermissions
 */
public UserDataPanel(boolean visible,boolean editmode,boolean enableGroupSelect,boolean enablePermissions){
  password=new PasswordPanel(editmode);
  groupSelect=new GroupSelect(enableGroupSelect);
  initWidget(uiBinder.createAndBindUi(this));
  this.editmode=editmode;
  super.setVisible(visible);
  this.enableGroupSelect=enableGroupSelect;
  groupSelectPanel.setVisible(enableGroupSelect);
  permissionsSelectPanel.setVisible(enablePermissions);
  ValueChangeHandler<String> valueChangedHandler=new ValueChangeHandler<String>(){
    @Override public void onValueChange(    ValueChangeEvent<String> event){
      onChange();
    }
  }
;
  ChangeHandler changeHandler=new ChangeHandler(){
    @Override public void onChange(    ChangeEvent event){
      UserDataPanel.this.onChange();
    }
  }
;
  SelectionHandler<Suggestion> selectionHandler=new SelectionHandler<Suggestion>(){
    @Override public void onSelection(    SelectionEvent<Suggestion> event){
      onChange();
    }
  }
;
  KeyUpHandler keyUpHandler=new KeyUpHandler(){
    @Override public void onKeyUp(    KeyUpEvent event){
      onChange();
    }
  }
;
  username.addKeyDownHandler(new KeyDownHandler(){
    @Override public void onKeyDown(    KeyDownEvent event){
      int keyCode=event.getNativeKeyCode();
      if (!(keyCode >= '0' && keyCode <= '9') && !(keyCode >= 'A' && keyCode <= 'Z') && !(keyCode >= 'a' && keyCode <= 'z')&& keyCode != '.' && keyCode != '_' && (keyCode != KeyCodes.KEY_TAB) && (keyCode != KeyCodes.KEY_DELETE) && (keyCode != KeyCodes.KEY_ENTER) && (keyCode != KeyCodes.KEY_HOME) && (keyCode != KeyCodes.KEY_END) && (keyCode != KeyCodes.KEY_LEFT) && (keyCode != KeyCodes.KEY_UP) && (keyCode != KeyCodes.KEY_RIGHT) && (keyCode != KeyCodes.KEY_DOWN) && (keyCode != KeyCodes.KEY_BACKSPACE)) {
        ((TextBox)event.getSource()).cancelKey();
      }
    }
  }
);
  username.addChangeHandler(changeHandler);
  username.addKeyUpHandler(keyUpHandler);
  password.addValueChangeHandler(valueChangedHandler);
  fullname.addChangeHandler(changeHandler);
  fullname.addKeyUpHandler(keyUpHandler);
  permissionsPanel.addValueChangeHandler(new ValueChangeHandler<List<String>>(){
    @Override public void onValueChange(    ValueChangeEvent<List<String>> event){
      onChange();
    }
  }
);
  groupSelect.addValueChangeHandler(new ValueChangeHandler<List<Group>>(){
    @Override public void onValueChange(    ValueChangeEvent<List<Group>> event){
      updatePermissions(event.getValue());
      onChange();
    }
  }
);
}

Fixed version (ground truth):
/** 
 * Create a new user data panel
 * @param visible
 * @param editmode
 * @param enableGroupSelect
 * @param enablePermissions
 */
public UserDataPanel(boolean visible,boolean editmode,boolean enableGroupSelect,boolean enablePermissions){
  password=new PasswordPanel(editmode);
  groupSelect=new GroupSelect(enableGroupSelect);
  initWidget(uiBinder.createAndBindUi(this));
  this.editmode=editmode;
  super.setVisible(visible);
  this.enableGroupSelect=enableGroupSelect;
  groupSelectPanel.setVisible(enableGroupSelect);
  permissionsSelectPanel.setVisible(enablePermissions);
  ValueChangeHandler<String> valueChangedHandler=new ValueChangeHandler<String>(){
    @Override public void onValueChange(    ValueChangeEvent<String> event){
      onChange();
    }
  }
;
  ChangeHandler changeHandler=new ChangeHandler(){
    @Override public void onChange(    ChangeEvent event){
      UserDataPanel.this.onChange();
    }
  }
;
  KeyUpHandler keyUpHandler=new KeyUpHandler(){
    @Override public void onKeyUp(    KeyUpEvent event){
      onChange();
    }
  }
;
  username.addKeyDownHandler(new KeyDownHandler(){
    @Override public void onKeyDown(    KeyDownEvent event){
      int keyCode=event.getNativeKeyCode();
      if (!(keyCode >= '0' && keyCode <= '9') && !(keyCode >= 'A' && keyCode <= 'Z') && !(keyCode >= 'a' && keyCode <= 'z')&& keyCode != '.' && keyCode != '_' && (keyCode != KeyCodes.KEY_TAB) && (keyCode != KeyCodes.KEY_DELETE) && (keyCode != KeyCodes.KEY_ENTER) && (keyCode != KeyCodes.KEY_HOME) && (keyCode != KeyCodes.KEY_END) && (keyCode != KeyCodes.KEY_LEFT) && (keyCode != KeyCodes.KEY_UP) && (keyCode != KeyCodes.KEY_RIGHT) && (keyCode != KeyCodes.KEY_DOWN) && (keyCode != KeyCodes.KEY_BACKSPACE)) {
        ((TextBox)event.getSource()).cancelKey();
      }
    }
  }
);
  username.addChangeHandler(changeHandler);
  username.addKeyUpHandler(keyUpHandler);
  password.addValueChangeHandler(valueChangedHandler);
  fullname.addChangeHandler(changeHandler);
  fullname.addKeyUpHandler(keyUpHandler);
  permissionsPanel.addValueChangeHandler(new ValueChangeHandler<List<String>>(){
    @Override public void onValueChange(    ValueChangeEvent<List<String>> event){
      onChange();
    }
  }
);
  groupSelect.addValueChangeHandler(new ValueChangeHandler<List<Group>>(){
    @Override public void onValueChange(    ValueChangeEvent<List<Group>> event){
      updatePermissions(event.getValue());
      onChange();
    }
  }
);
}