@Override
	public Property deriveRequirements(Property property) throws PropertyException
	{	
		if(property instanceof DelayProperty) {
			// do NoS introduces delay?
			if(getMin() != UNDEFINED) {
				int maxDelay = ((DelayProperty) property).getMax();
				
				if(maxDelay != UNDEFINED) {
					// min delay introduced and max delay required
					if(getMin() <= maxDelay) {
						return create(getMin(), getMin(), getVariance());
					} else {
						throw new PropertyException(this, "Min of " +this +" exceeds max value " +property);
					}
				} else {
					// delay introduced and not limited by requirements
					return create(getMin(), UNDEFINED, 0);
				}
			} else {
				// no delay introduced by NoS
				return create(0, 0, 0);
			}
		} else {
			throw new PropertyException(this, "Parameter " +property +" is not a " +DelayProperty.class + " object.");
		}
	}