class BundleCondition extends BasicCondition<Bundle, BundleCondition> implements BundleChecks<BundleCondition> {

	@NonNull
	@Override
	public BundleCondition valueIsOfType(@NonNull String key, @NonNull Class<?> type)
	{
		require(subject).containsKey(key);

		Object intermediateSubject = subject.get(key);
		check(intermediateSubject).isNotNull();

		//noinspection ConstantConditions
		if (!type.isAssignableFrom(intermediateSubject.getClass()))
		{
			DbcAssertionError.throwNew(new IllegalStateException("Expected bundle to contain value of type <" + type + "> with key <" + key + ">"), this.message);
		}

		return result();
	}

	public  BundleCondition(Bundle subject);

}