// Path: src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java
// enum BackendFlavor {
//     MONDRIAN("Mondrian"),
//     SSAS("Microsoft"),
//     PALO("Palo"),
//     SAP("SAP"),
//     ESSBASE("Essbase"),
//     UNKNOWN("");
// 
//     private final String token;
// 
//     private BackendFlavor(String token) {
//         this.token = token;
//     }
// 
//     static BackendFlavor getFlavor(OlapConnection conn, boolean fail)
//         throws OlapException
//     {
//         return getFlavor(
//             conn.getOlapDatabase().getDataSourceInfo(),
//             conn.getOlapDatabase().getProviderName(),
//             fail);
//     }
// 
//     static BackendFlavor getFlavor(
//         String dataSourceInfo, String providerName, boolean fail)
//     {
//         for (BackendFlavor flavor : BackendFlavor.values()) {
//             if (providerName.toUpperCase()
//                     .contains(flavor.token.toUpperCase())
//                 || dataSourceInfo.toUpperCase()
//                     .contains(flavor.token.toUpperCase()))
//             {
//                 return flavor;
//             }
//         }
//         if (fail) {
//             throw new AssertionError("Can't determine the backend vendor.");
//         } else {
//             return UNKNOWN;
//         }
//     }
// }


import org.olap4j.OlapException;
import org.olap4j.driver.xmla.XmlaOlap4jConnection.BackendFlavor;
import org.olap4j.impl.*;
import org.olap4j.mdx.IdentifierSegment;
import org.olap4j.metadata.*;
import java.lang.ref.SoftReference;
import java.util.*;
                new NamedListImpl<XmlaOlap4jMember>();
            lookupMemberRelatives(
                Olap4jUtil.enumSetOf(Member.TreeOp.SELF),
                memberUniqueName,
                list);
            switch (list.size()) {
            case 0:
                return null;
            case 1:
                return list.get(0);
            default:
                String providerName =
                    olap4jSchema.olap4jCatalog.olap4jDatabaseMetaData
                        .olap4jConnection.getOlapDatabase().getProviderName();
                if ("Microsoft Analysis Services".equals(providerName)) {
                    return list.get(0);
                }
                throw new IllegalArgumentException(
                    "more than one member with unique name '"
                    + memberUniqueName
                    + "'");
            }
        }

        public void lookupMembersByUniqueName(
            List<String> memberUniqueNames,
            Map<String, XmlaOlap4jMember> memberMap) throws OlapException
        {
            final XmlaOlap4jDatabaseMetaData m =
                olap4jSchema.olap4jCatalog.olap4jDatabaseMetaData;
// Path: src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java
// enum BackendFlavor {
//     MONDRIAN("Mondrian"),
//     SSAS("Microsoft"),
//     PALO("Palo"),
//     SAP("SAP"),
//     ESSBASE("Essbase"),
//     UNKNOWN("");
// 
//     private final String token;
// 
//     private BackendFlavor(String token) {
//         this.token = token;
//     }
// 
//     static BackendFlavor getFlavor(OlapConnection conn, boolean fail)
//         throws OlapException
//     {
//         return getFlavor(
//             conn.getOlapDatabase().getDataSourceInfo(),
//             conn.getOlapDatabase().getProviderName(),
//             fail);
//     }
// 
//     static BackendFlavor getFlavor(
//         String dataSourceInfo, String providerName, boolean fail)
//     {
//         for (BackendFlavor flavor : BackendFlavor.values()) {
//             if (providerName.toUpperCase()
//                     .contains(flavor.token.toUpperCase())
//                 || dataSourceInfo.toUpperCase()
//                     .contains(flavor.token.toUpperCase()))
//             {
//                 return flavor;
//             }
//         }
//         if (fail) {
//             throw new AssertionError("Can't determine the backend vendor.");
//         } else {
//             return UNKNOWN;
//         }
//     }
// }


// Path: src/org/olap4j/driver/xmla/XmlaOlap4jCube.java
import org.olap4j.OlapException;
import org.olap4j.driver.xmla.XmlaOlap4jConnection.BackendFlavor;
import org.olap4j.impl.*;
import org.olap4j.mdx.IdentifierSegment;
import org.olap4j.metadata.*;
import java.lang.ref.SoftReference;
import java.util.*;

                new NamedListImpl<XmlaOlap4jMember>();
            lookupMemberRelatives(
                Olap4jUtil.enumSetOf(Member.TreeOp.SELF),
                memberUniqueName,
                list);
            switch (list.size()) {
            case 0:
                return null;
            case 1:
                return list.get(0);
            default:
                String providerName =
                    olap4jSchema.olap4jCatalog.olap4jDatabaseMetaData
                        .olap4jConnection.getOlapDatabase().getProviderName();
                if ("Microsoft Analysis Services".equals(providerName)) {
                    return list.get(0);
                }
                throw new IllegalArgumentException(
                    "more than one member with unique name '"
                    + memberUniqueName
                    + "'");
            }
        }

        public void lookupMembersByUniqueName(
            List<String> memberUniqueNames,
            Map<String, XmlaOlap4jMember> memberMap) throws OlapException
        {
            final XmlaOlap4jDatabaseMetaData m =
                olap4jSchema.olap4jCatalog.olap4jDatabaseMetaData;
            switch (BackendFlavor.getFlavor(m.olap4jConnection, false)) {