         case (.eContext(let lhsValue), .eContext(let rhsValue)):
             return lhsValue == rhsValue
         case (.points(let lhsValue), .points(let rhsValue)):
+            return lhsValue == rhsValue
+        case (.mobileBanking(let lhsValue), .mobileBanking(let rhsValue)):
             return lhsValue == rhsValue
         case (.other(let lhsType, let lhsParameters), .other(let rhsType, let rhsParameters)):
             return lhsType == rhsType &&

            self = .truemoney(try TrueMoney(from: decoder))
        case PaymentInformation.Points.self:
            self = .points(try Points(from: decoder))
        case let value:
            self = .other(type: value, parameters: try decoder.decodeJSONDictionary().filter({ (key, _) -> Bool in
                switch key {

    
    /// Points Payment Source
    case points(Points)

    /// The code of the bank for the Internet Bankning Payment
    public enum MobileBanking: PaymentMethod {
        public static let paymentMethodTypePrefix: String = "mobile_banking_"

        case scb
        case other(String)
    }

    /// Mobile Banking Payment Source
    case mobileBanking(MobileBanking)
    
    /// Other Payment Source
    case other(type: String, parameters: [String: Any])
