public Enum UndoableLabeledEnumPopup(Rect r, string label, Enum enumValue, string undoInfix)
        {
            Enum nextEnum = SF_GUI.LabeledEnumField(r, label, enumValue, EditorStyles.miniLabel);

            if (nextEnum.ToString() != enumValue.ToString())
            {
                string undoName = "set " + undoInfix + " to " + nextEnum;
                Undo.RecordObject(this, undoName);
                enumValue = nextEnum;
            }
            return(enumValue);
        }