code: public JComponent[] addBinding(Binding binding, JComponent wrappedComponent, String attributes,
              String labelAttributes) {
          Assert.notNull(binding, "binding is null");
          Assert.isTrue(getFormModel() == binding.getFormModel(),
                  "Binding's form model must match FormBuilder's form model");
          JComponent component = binding.getControl();
          final JLabel label = createLabelFor(binding.getProperty(), component);
          if (wrappedComponent == null) {
              wrappedComponent = component;
          }
          TableLayoutBuilder layoutBuilder = getLayoutBuilder();
          if (!layoutBuilder.hasGapToLeft()) {
              layoutBuilder.gapCol();
          }
          layoutBuilder.cell(label, labelAttributes);
          layoutBuilder.labelGapCol();
          layoutBuilder.cell(wrappedComponent, attributes);
          return new JComponent[] { label, component, wrappedComponent };
      }
docs: adds a field binding to the form
  
  @param binding
  the binding of the field
  @param wrappedComponent
  the optional wrapped component. If null the component of the binding is used. This Parameter should be
  used if the component of the binding is being wrapped inside this component
  @param attributes
  optional layout attributes for the wrapped component. If null no layout attributes will be applied to
  the component. See {@link TableLayoutBuilder} for syntax details
  @param attributes
  optional layout attributes for the label. If null no layout attributes will be applied to the label.
  See {@link TableLayoutBuilder} for syntax details
  @return an array containing the label, the component of the field binding and the wrapped component