public static bool DrawDatasetTrackableInspector(SerializedDataSetTrackable serializedObject, bool resetTrackable, Func <ConfigData, string[]> getTrackableNamesFunc, string trackableLabel)
        {
            bool result = false;

            string[] array = new string[ConfigDataManager.Instance.NumConfigDataObjects];
            ConfigDataManager.Instance.GetConfigDataNames(array);
            int num = -1;

            if (!serializedObject.DataSetPathProperty.hasMultipleDifferentValues)
            {
                num = VuforiaUtilities.GetIndexFromString(serializedObject.GetDataSetName(), array);
                if (num < 0)
                {
                    num = 0;
                }
            }
            EditorGUI.BeginChangeCheck();
            int  num2 = EditorGUILayout.Popup("Database", num, array, new GUILayoutOption[0]);
            bool flag = EditorGUI.EndChangeCheck();

            if (resetTrackable && num2 < 0)
            {
                num2 = 0;
                flag = true;
            }
            if (num2 >= 0)
            {
                string     dataSetName = array[num2];
                ConfigData configData  = ConfigDataManager.Instance.GetConfigData(dataSetName);
                string[]   array2      = getTrackableNamesFunc(configData);
                int        num3        = -1;
                if (!serializedObject.TrackableNameProperty.hasMultipleDifferentValues)
                {
                    num3 = VuforiaUtilities.GetIndexFromString(serializedObject.TrackableName, array2);
                    if (num3 < 0)
                    {
                        num3 = 0;
                    }
                }
                if (flag)
                {
                    num3 = 0;
                }
                EditorGUI.BeginChangeCheck();
                int  num4  = EditorGUILayout.Popup(trackableLabel, num3, array2, new GUILayoutOption[0]);
                bool flag2 = EditorGUI.EndChangeCheck();
                if (array2.Length != 0 && (flag | flag2 | resetTrackable))
                {
                    result = true;
                    serializedObject.DataSetPath = "";
                    serializedObject.DataSetPath = VuforiaRuntimeUtilities.StripStreamingAssetsFromPath(ConfigDataManager.Instance.GetConfigData(array[num2]).FullPath);
                    if (num4 >= 0)
                    {
                        string trackableName = array2[num4];
                        serializedObject.TrackableName = "";
                        serializedObject.TrackableName = trackableName;
                    }
                }
            }
            else
            {
                EditorGUILayout.Popup(trackableLabel, -1, new string[0], new GUILayoutOption[0]);
            }
            return(result);
        }