protected override void CreateNewAsset(List <AssetInfo> assetInfoList)
        {
            // Create a list of all urgency function types, excluding abstract types and
            // types that have wrappers:
            var list       = new List <System.Type>();
            var assemblies = RuntimeTypeUtility.GetAssemblies();

            foreach (var assembly in assemblies)
            {
                try
                {
                    var assemblyList = (from assemblyType in assembly.GetExportedTypes()
                                        where typeof(UrgencyFunction).IsAssignableFrom(assemblyType)
                                        select assemblyType).ToArray();
                    list.AddRange(assemblyList);
                }
                catch (System.Exception)
                {
                    // Ignore exceptions and move on to next assembly.
                }
            }
            var menu = new GenericMenu();

            for (int i = 0; i < list.Count; i++)
            {
                var type = list[i];
                if (type == null)
                {
                    continue;
                }
                if (type.IsAbstract)
                {
                    continue;
                }
                if (QuestEditorUtility.HasWrapperType(type))
                {
                    continue;
                }
                menu.AddItem(new GUIContent(type.Name), false, OnClickNewUrgencyFunction, type);
            }
            menu.ShowAsContext();
        }