 		testRecyclingCenter.registerInitHandler({ (context: Any?) -> RecyclableMaterial in
 			return input
 			}, forReuseIdentifier: input.identifier)
-		let output = testRecyclingCenter.dequeueObjectWithReuseIdentifier(input.identifier)
-		XCTAssert(input == output)
+		do {
+			let output = try testRecyclingCenter.dequeueObjectWithReuseIdentifier(input.identifier)
+			XCTAssert(input == output)
+		}
+		catch let error {
+			XCTFail("\(error)")
+		}
 	}
 
 	// A registered initHandler should initialize objects based on the dequeue context.

		testRecyclingCenter.registerInitHandler({ (context: Any?) -> RecyclableMaterial in
			return initHandlerResponse
			}, forReuseIdentifier: input.identifier)
		testRecyclingCenter.enqueueObject(input, withReuseIdentifier: input.identifier)
		let result = testRecyclingCenter.dequeueObjectWithReuseIdentifier(input.identifier)
		XCTAssert(input == result)
	}

	/// An enqueued object should be repeatedly dequeueable.

		testRecyclingCenter.registerInitHandler({ (context: Any?) -> RecyclableMaterial in
			return input
			}, forReuseIdentifier: input.identifier)
		do {
			try testRecyclingCenter.enqueueObject(input, withReuseIdentifier: input.identifier)
			XCTAssert(testRecyclingCenter.unusedRecyclables[input.identifier]?.popFirst() == input)
		}
		catch let error {
			XCTFail("\(error)")
		}
	}

	/// Enqueue
	/// An object must be registered for a reuse identifier before it is enqueued.
	func testPrematureEnqueueFailure() {
		let input = Glass()
		do {
			try testRecyclingCenter.enqueueObject(input, withReuseIdentifier: input.identifier)
			XCTFail()
		}
		catch let error {
			guard let recyclingError = error as? RecyclingCenterError else {
				XCTFail("\(error)")
				return
			}
			
			switch recyclingError {
			case .UnknownReuseIdentifier(reuseIdentifier: let reuseIdentifier):
				XCTAssert(reuseIdentifier == input.identifier)
			default:
				XCTFail("\(error)")
			}
		}
	}

	// MARK: - Dequeue -
