docs: public void pullUpTo(Phase phase)
  	{
  		// get
  		
  		if (!phase.contains(GET))
  		{
  			return;
  		}
  		
  		T targetValue = target.getValue();
  		
  		// validate-post-get
  		
  		if (!phase.contains(VALIDATE_POST_GET))
  		{
  			return;
  		}
  		
  		Collection<V> oldViolations = new ArrayList<V>(violations);
  		violations.clear();
  
  		if (validate(targetValidator, targetValue) && phase.contains(CONVERT))
  		{
  			// convert
  			
  			boolean converted = true;
  			S sourceValue = null;
  			
  			try
  			{
  				sourceValue = converter.unconvert(targetValue);
  			}
  			// TODO: catch all other exceptions and terminate too?
  			catch (UnsupportedOperationException exception)
  			{
  				converted = false;
  			}
  			
  			// validate-pre-set
  		
  			if (converted && phase.contains(VALIDATE_PRE_SET) && validate(sourceValidator, sourceValue)
  				&& phase.contains(SET))
  			{
  				// set
  				
  				source.setValue(sourceValue);
  			}
  		}
  		
  		support.fireValueChanged(oldViolations, new ArrayList<V>(violations));
  	}