private void generateVariations (RefineableRule R)
	{
		for(Dimension d : R.getCondition().values())
		{
			for(Value v : d.values())
			{
				RefineableRule r = new RefineableRule (new GeneralizedConditionChunk(R.getCondition().clone()),R.getAction());
				if(v.isFullyActivated())
				{
					r.getCondition().get(d.getID()).get(v.getID()).setActivation(v.MINIMUM_ACTIVATION_THRESHOLD);
				}
				else
					r.getCondition().get(d.getID()).get(v.getID()).setActivation(v.FULL_ACTIVATION_THRESHOLD);
				
				if(r.getCondition().get(d.getID()).getNumFullyActivatedVals() > 0 
						&& !r.getCondition().checkMatchAll() && !contains(r))
				{
					if(!Variations.contains(r))
						Variations.add(r);
					else
						r = (RefineableRule)Variations.get(r.getCondition(), r.getAction());
					if(R.getVariations() == null)
						R.initVariations();
					R.getVariations().add(r);
					r.setMatchAll(R.getMatchAll());
				}
			}
		}
	}