--- Sometimes we want to look through a newtype and get its associated coercion
--- It only strips *one layer* off, so the caller will usually call itself recursively
--- Only applied to types of kind *, hence the newtype is always saturated
--- splitNewTypeRepCo_maybe ty
--- = Just (ty', co) if co : ty ~ ty'
--- Returns Nothing for non-newtypes or fully-transparent newtypes
+-- ^ Sometimes we want to look through a @newtype@ and get its associated coercion.
+-- This function only strips *one layer* of @newtype@ off, so the caller will usually call
+-- itself recursively. Furthermore, this function should only be applied to types of kind @*@,
+-- hence the newtype is always saturated. If @co : ty ~ ty'@ then:
+--
+-- > splitNewTypeRepCo_maybe ty = Just (ty', co)
+--
+-- The function returns @Nothing@ for non-@newtypes@ or fully-transparent @newtype@s.