         }
     }
     
-    init(identifier: __MXMembership) {
+    public init(identifier: __MXMembership) {
         let possibilities: [MXMembership] = [.unknown, .invite, .join, .leave, .ban]
         self = possibilities.first(where: { $0.identifier == identifier }) ?? .unknown
     }

    case text, emote, notice, image, audio, video, location, file
    case custom(String)
    
    var identifier: String {
        switch self {
        case .text: return kMXMessageTypeText
        case .emote: return kMXMessageTypeEmote

public enum MXMembership {
    case unknown, invite, join, leave, ban
    
    public var identifier: __MXMembership {
        switch self {
        case .unknown: return __MXMembershipUnknown
        case .invite: return __MXMembershipInvite
