docs: public void pushUpTo(Phase phase)
  	{
  		// get
  		
  		if (!phase.contains(GET))
  		{
  			return;
  		}
  		
  		S sourceValue = source.getValue();
  		
  		// validate-post-get
  		
  		if (!phase.contains(VALIDATE_POST_GET))
  		{
  			return;
  		}
  		
  		Collection<V> oldViolations = new ArrayList<V>(violations);
  		violations.clear();
  		
  		if (validate(sourceValidator, sourceValue) && phase.contains(CONVERT))
  		{
  			// convert
  			
  			T targetValue = converter.convert(sourceValue);
  		
  			// validate-pre-set
  			
  			if (phase.contains(VALIDATE_PRE_SET) && validate(targetValidator, targetValue) && phase.contains(SET))
  			{
  				// set
  				
  				target.setValue(targetValue);
  			}
  		}
  		
  		support.fireValueChanged(oldViolations, new ArrayList<V>(violations));
  	}