 		context.keyPathBindings.removeValue(forKey: keyPath)
 	}
 	
-	func removeAllObservers() {
+	public func removeAllObservers() {
 		// Remove all remaining contexts.
 		for context in _contexts {
 			// Stop observing for all keypaths.

			context: nil)
	}
	
	func stopObserving(_ observable: NSObject, forKeyPath keyPath: String) {
		// Skip if keypath isn't mapped.
		guard let context = _contextForObservable(observable),
			context.keyPathBindings[keyPath] != nil else {

import Foundation

public class KVO: NSObject {

	public enum Errors: Error {
		case invalidKVO(String)
