The Swift language constructs `self`, `Self`, and `Self.self` can be confusing, even for experienced developers.
🔹 `self` refers to the instance of the type within its own instance methods.
🔹 `Self` refers to the type that conforms to a protocol, allowing for polymorphic behavior.
🔹 `Self.self` is used to refer to the metatype of the type, essentially the type of the type itself.
You can read more on these constructs in my blog post: https://nilcoalescing.com/blog/UseCasesForSelfInSwift/