'From Squeak5.3beta of 29 December 2019 [latest update: #19301] on 3 January 2020 at 2:51:27 am'!
ExceptionSet subclass: #ExceptionConjunction
	instanceVariableNames: ''
	classVariableNames: ''
	poolDictionaries: ''
	category: 'Kernel-Exceptions'!
ExceptionSet subclass: #ExceptionDisjunction
	instanceVariableNames: ''
	classVariableNames: ''
	poolDictionaries: ''
	category: 'Kernel-Exceptions'!

!BlockClosure methodsFor: 'exception protocol' stamp: 'ct 1/3/2020 02:11'!
& anotherPattern

	^ ExceptionConjunction
		with: self
		with: anotherPattern! !

!BlockClosure methodsFor: 'exception protocol' stamp: 'ct 1/3/2020 02:11'!
, anotherPattern

	^ ExceptionDisjunction
		with: self
		with: anotherPattern! !

!BlockClosure methodsFor: 'exception protocol' stamp: 'ct 1/3/2020 02:51'!
handles: anException

	^ self cull: anException! !


!Exception class methodsFor: 'exception protocol' stamp: 'ct 1/3/2020 02:06'!
& anotherExceptionPattern

	^ ExceptionConjunction
		with: self
		with: anotherExceptionPattern! !

!Exception class methodsFor: 'exception protocol' stamp: 'ct 1/3/2020 02:06'!
, anotherExceptionPattern

	^ ExceptionDisjunction
		with: self
		with: anotherExceptionPattern! !


!ExceptionSet methodsFor: 'exception protocol' stamp: 'ct 1/3/2020 02:23'!
& anotherPattern

	self flag: #doubleDispatch "possible optimization".
	^ ExceptionConjunction
		with: self
		with: anotherPattern! !

!ExceptionSet methodsFor: 'exception protocol' stamp: 'ct 1/3/2020 02:23'!
, anotherPattern

	self flag: #doubleDispatch "possible optimization".
	^ ExceptionDisjunction
		with: self
		with: anotherPattern! !

!ExceptionSet methodsFor: 'exception protocol' stamp: 'ct 1/3/2020 02:09'!
handles: anException
	"Determine whether an exception handler will accept a signaled exception."

	^ self subclassResponsibility! !


!ExceptionConjunction methodsFor: 'exception protocol' stamp: 'ct 1/3/2020 02:08'!
, anotherPattern

	self add: anotherPattern.! !

!ExceptionConjunction methodsFor: 'exception protocol' stamp: 'ct 1/3/2020 02:03'!
handles: anException

	^ exceptions allSatisfy: [:pattern |
		pattern handles: anException]! !


!ExceptionDisjunction methodsFor: 'exception protocol' stamp: 'ct 1/3/2020 02:08'!
& anotherPattern

	self add: anotherPattern.! !

!ExceptionDisjunction methodsFor: 'exception protocol' stamp: 'ct 1/3/2020 02:03'!
handles: anException

	^ exceptions anySatisfy: [:pattern |
		pattern handles: anException]! !


!ExceptionSet class methodsFor: 'instance creation' stamp: 'ct 1/3/2020 02:05'!
with: anExceptionPattern

	^ self new
		add: anExceptionPattern;
		yourself! !

!ExceptionSet class methodsFor: 'instance creation' stamp: 'ct 1/3/2020 02:05'!
with: anExceptionPattern with: anotherExceptionPattern

	^ self new
		add: anExceptionPattern;
		add: anotherExceptionPattern;
		yourself! !


!ExceptionSet class reorganize!
('instance creation' with: with:with:)
!


!ExceptionDisjunction reorganize!
('exception protocol' & handles:)
!


!ExceptionConjunction reorganize!
('exception protocol' , handles:)
!

