docs: public void setValues(List<ProposedValue> values)
  		throws InferenceException
  	{
  		m_resettingRules.clear();
          m_assignedFields.clear();
          m_readOnlyFields.clear();
          m_activateFields.clear();
          m_requiredFields.clear();
  		m_excludes.clear();
  		@SuppressWarnings("unused")
  		int count=0;
  		m_indenter.clear();
  		s_log.debug("{}Setting values...",m_indenter);
  		m_indenter.increment();
  		for (ProposedValue pv: values)
  		{
  			RuleProxyField rpf = null;
  			count++;
  			try
  			{
  			    rpf = pv.getRuleProxyField();
  		        addToAgenda(rpf);
  				rpf.reset();
  				rpf.setValue(pv.getValue());
  			}
  			catch (InferenceException e)
  			{
                  clearAgenda();
  				throw e;
  			}
  	        finally
  	        {
  	        	removeUnknownField(rpf.getProxyField());
  	            m_resettingRules.clear();
  	            clearReviewList();
  	        }
  		}
  		try
  		{
  			forwardChain();
  		}
          catch (InferenceException e)
          {
              s_log.error(e.getMessage(),e);
              throw e;
          }
          catch (ConstraintViolationException e)
          {
              s_log.error(e.getMessage(),e);
              throw e;
          }
          catch (ValidationException e)
          {
              s_log.error(e.getMessage(),e);
              throw e;
          }
  		finally
  		{
              clearAgenda();
  			m_resettingRules.clear();
              clearReviewList();
  		}
  		m_indenter.clear();
  		// This effectively commits the changes to the exposed data
  		boolean enabled = m_session.isEnabled();
  		m_session.setEnabled(false);
          for (ProxyField proxyField: m_assignedFields)
          {
              proxyField.updateValue();
          }
          for (ProxyField proxyField: m_unknownFields)
          {
              proxyField.getFieldMetadata().setUnknown(true);
          }
          m_unknownFields.clear();
          for (ProxyField proxyField: m_activateFields)
          {
              proxyField.setInActive(false);
          }
          for (ProxyField proxyField: m_readOnlyFields)
          {
              proxyField.setReadOnly(true);
          }
          for (ProxyField proxyField: m_requiredFields)
          {
              proxyField.setRequired(true);
          }
          for (Exclude exclude: m_excludes)
          {
              ProxyField proxyField = exclude.getProxyField();
              proxyField.exclude(exclude.getKey());
              exclude.getRuleContext().addExclude(exclude);
  
          }
  		m_session.setEnabled(enabled);
  		s_log.debug("Finished Setting values");
  	}