Program: 188599
Project: 188599
Buggy source:
private static void addDatePicker(FlowPanel panel,final FlowPanel layout,final MetadataValue mv,final boolean mandatory){
  final DateTimeFormat dateTimeFormat=DateTimeFormat.getFormat("String_Node_Str");
  Label mvLabel=new Label(getFieldLabel(mv));
  mvLabel.addStyleName("String_Node_Str");
  if (mandatory) {
    mvLabel.addStyleName("String_Node_Str");
  }
  final DateBox mvDate=new DateBox();
  mvDate.getDatePicker().setYearAndMonthDropdownVisible(true);
  mvDate.getDatePicker().setYearArrowsVisible(true);
  mvDate.addStyleName("String_Node_Str");
  mvDate.setFormat(new DateBox.DefaultFormat(){
    @Override public String format(    DateBox dateBox,    Date date){
      if (date == null)       return null;
      return dateTimeFormat.format(date);
    }
  }
);
  String value=mv.get("String_Node_Str");
  if (value != null && value.length() > 0) {
    try {
      Date date=dateTimeFormat.parse(value.trim());
      mvDate.setValue(date);
    }
 catch (    IllegalArgumentException iae) {
      mvDate.getTextBox().setValue(value);
    }
  }
  mvDate.addValueChangeHandler(new ValueChangeHandler<Date>(){
    @Override public void onValueChange(    ValueChangeEvent<Date> valueChangeEvent){
      String newValue=dateTimeFormat.format(mvDate.getValue());
      mv.set("String_Node_Str",newValue);
      if (mandatory && (newValue != null && !newValue.trim().equalsIgnoreCase("String_Node_Str"))) {
        mvDate.removeStyleName("String_Node_Str");
      }
 else       if (mandatory && (newValue == null || newValue.trim().equalsIgnoreCase("String_Node_Str"))) {
        mvDate.addStyleName("String_Node_Str");
      }
    }
  }
);
  mvDate.getTextBox().addValueChangeHandler(new ValueChangeHandler<String>(){
    @Override public void onValueChange(    ValueChangeEvent<String> event){
      String value=event.getValue();
      try {
        Date date=dateTimeFormat.parse(value.trim());
        mvDate.setValue(date);
      }
 catch (      IllegalArgumentException iae) {
        mvDate.getTextBox().setValue(value);
      }
    }
  }
);
  layout.add(mvLabel);
  layout.add(mvDate);
  String description=mv.get("String_Node_Str");
  if (description != null && description.length() > 0) {
    Label mvDescription=new Label(description);
    mvDescription.addStyleName("String_Node_Str");
    layout.add(mvDescription);
  }
  if (mv.get("String_Node_Str") != null && !mv.get("String_Node_Str").trim().equalsIgnoreCase("String_Node_Str")) {
    Label errorLabel=new Label(mv.get("String_Node_Str"));
    errorLabel.addStyleName("String_Node_Str");
    layout.add(errorLabel);
    mvDate.addStyleName("String_Node_Str");
  }
  panel.add(layout);
}

Fixed version (ground truth):
private static void addDatePicker(FlowPanel panel,final FlowPanel layout,final MetadataValue mv,final boolean mandatory){
  final DateTimeFormat dateTimeFormat=DateTimeFormat.getFormat("String_Node_Str");
  Label mvLabel=new Label(getFieldLabel(mv));
  mvLabel.addStyleName("String_Node_Str");
  if (mandatory) {
    mvLabel.addStyleName("String_Node_Str");
  }
  final DateBox mvDate=new DateBox();
  mvDate.getDatePicker().setYearAndMonthDropdownVisible(true);
  mvDate.getDatePicker().setYearArrowsVisible(true);
  mvDate.addStyleName("String_Node_Str");
  mvDate.setFormat(new DateBox.DefaultFormat(){
    @Override public String format(    DateBox dateBox,    Date date){
      if (date == null)       return null;
      return dateTimeFormat.format(date);
    }
  }
);
  String value=mv.get("String_Node_Str");
  if (value != null && value.length() > 0) {
    try {
      Date date=dateTimeFormat.parse(value.trim());
      mvDate.setValue(date);
    }
 catch (    IllegalArgumentException iae) {
      mvDate.getTextBox().setValue(value);
    }
  }
  mvDate.addValueChangeHandler(new ValueChangeHandler<Date>(){
    @Override public void onValueChange(    ValueChangeEvent<Date> valueChangeEvent){
      String newValue=dateTimeFormat.format(mvDate.getValue());
      mv.set("String_Node_Str",newValue);
      if (mandatory && (newValue != null && !newValue.trim().equalsIgnoreCase("String_Node_Str"))) {
        mvDate.removeStyleName("String_Node_Str");
      }
 else       if (mandatory && (newValue == null || newValue.trim().equalsIgnoreCase("String_Node_Str"))) {
        mvDate.addStyleName("String_Node_Str");
      }
    }
  }
);
  mvDate.getTextBox().addValueChangeHandler(new ValueChangeHandler<String>(){
    @Override public void onValueChange(    ValueChangeEvent<String> event){
      String value=event.getValue();
      try {
        Date date=dateTimeFormat.parse(value.trim());
        mvDate.setValue(date);
        mv.set("String_Node_Str",value);
      }
 catch (      IllegalArgumentException iae) {
        if (event.getValue() == null || event.getValue().trim().equalsIgnoreCase("String_Node_Str")) {
          mv.set("String_Node_Str",null);
        }
        mvDate.getTextBox().setValue(value);
      }
    }
  }
);
  layout.add(mvLabel);
  layout.add(mvDate);
  String description=mv.get("String_Node_Str");
  if (description != null && description.length() > 0) {
    Label mvDescription=new Label(description);
    mvDescription.addStyleName("String_Node_Str");
    layout.add(mvDescription);
  }
  if (mv.get("String_Node_Str") != null && !mv.get("String_Node_Str").trim().equalsIgnoreCase("String_Node_Str")) {
    Label errorLabel=new Label(mv.get("String_Node_Str"));
    errorLabel.addStyleName("String_Node_Str");
    layout.add(errorLabel);
    mvDate.addStyleName("String_Node_Str");
  }
  panel.add(layout);
}