     public static func register<P, T>(name: AnyHashable = Name.default, container: AnyHashable = Container.default, metadata: Any = (), cached: Bool = false, resolution: @escaping Resolution<P, T>) -> Key<T> {
         return register(key: Key(name: name, container: container), metadata: metadata, cached: cached, resolution: resolution)
     }
-}
 
-// Instance registration
-extension Guise {
+// MARK: - Instance Registration
+
     /**
      Register an instance of `T`.
      


import Foundation

// Block registration
extension Guise {
    /**
     Register a single resolution block with multiple keys. All of the keys must have the same type `T`, but may have
     different values for `name` and `container`.

    public static func register<T>(instance: @escaping @autoclosure () -> T, name: AnyHashable = Name.default, container: AnyHashable = Container.default, metadata: Any = ()) -> Key<T> {
        return register(instance: instance, key: Key(name: name, container: container), metadata: metadata)
    }

// MARK: - Factory Registration

    /**
     Register a factory that makes `T` instances.
     
