@Override
	public void fuse(Property property) throws PropertyException
	{
		if(property != null) {
			if(property.getClass().equals(getClass())) {
				MinMaxProperty prop = (MinMaxProperty) property;
				int newMin;
				if(min != UNDEFINED) {
					if(prop.getMin() != UNDEFINED) {
						newMin = Math.max(min, prop.getMin());
					} else {
						newMin = min;
					}
				} else {
					newMin = prop.getMin();
				}
				
				int newMax;
				if(max != UNDEFINED) {
					if(prop.getMax() != UNDEFINED) {
						newMax = Math.min(max, prop.getMax());
					} else {
						newMax = max;
					}
				} else {
					newMax = prop.getMax();
				}
				
				if(newMin > newMax) {
					throw new PropertyException(this, "Fuse with " +property +" leads to invalid values.");
				}
				
				// set new values only if all is fine
				min = newMin;
				max = newMax;
			}
		}
		
		throw new PropertyException(this, "Can not fuse with wrong type " +property);
	}