public ArrayList getUnsynchronizedComponents() {
          YIComponent view = controller.getView();
          Object model = controller.getModel();
          ArrayList result = new ArrayList();
          try {
              ArrayList comps = YUIToolkit.getViewComponents(view);
              Iterator it = comps.iterator();
              while (it.hasNext()) {
                  Object obj = (Object) it.next();
                  if (obj instanceof YIModelComponent) {
                      YIModelComponent comp = (YIModelComponent) obj;
                      Object compValue = comp.getModelValue();
                      Object beanValue = null;
                      if (model != null) {
                          String fieldName = (String) comp.getYProperty().get(YIComponent.MVC_NAME);
                          if (fieldName != null) {
                              try {
                                  beanValue = YCoreToolkit.getBeanValue(model, fieldName);
                              } catch (Exception ex) {
                                  controller.modelGetValueFailed(new YModelGetValueException(
                                          ex, comp));
                              }
                              if (!YCoreToolkit.equals(beanValue, compValue)) {
                                  result.add(comp);
                              }
                          }
                      }
                  }
              }
          } catch (Exception e) {
              controller.handleException(e);
          }
          return result;
      }