docs: private void addBinding(Binding<?, ?, V> binding)
  	{
  		bindings.add(binding);
  		
  		// prevent infinite loop when binder bound by itself
  		if (binding.getSource() != this)
  		{
  			updateViolations();
  			
  			// TODO: aggregate violations better; ideally provide a live view
  			binding.addObservableListener(new ObservableListener<Collection<V>>()
  			{
  				public void valueChanged(ObservableEvent<Collection<V>> event)
  				{
  					updateViolations();
  				}
  			});
  		}
  	}