///All reflection type nodes
 public static UnityEditor.GenericMenu AppendAllReflectionNodesMenu(this FlowGraph graph, UnityEditor.GenericMenu menu, string baseCategory, Vector2 pos, Port sourcePort, object dropInstance)
 {
     foreach (var type in UserTypePrefs.GetPreferedTypesList())
     {
         menu = graph.AppendTypeReflectionNodesMenu(menu, type, baseCategory, pos, sourcePort, dropInstance);
     }
     return(menu);
 }
        ///----------------------------------------------------------------------------------------------


        ///Returns all nodes' menu
        public static UnityEditor.GenericMenu GetFullNodesMenu(this FlowGraph flowGraph, Vector2 mousePos, Port context, Object dropInstance)
        {
            var menu = new UnityEditor.GenericMenu();

            if (context is ValueInput || context is ValueOutput)
            {
                menu = flowGraph.AppendTypeReflectionNodesMenu(menu, context.type, "", mousePos, context, dropInstance);
            }
            menu = flowGraph.AppendFlowNodesMenu(menu, "", mousePos, context, dropInstance);
            menu = flowGraph.AppendSimplexNodesMenu(menu, "Functions/Implemented", mousePos, context, dropInstance);
            menu = flowGraph.AppendAllReflectionNodesMenu(menu, "Functions/Reflected", mousePos, context, dropInstance);
            menu = flowGraph.AppendVariableNodesMenu(menu, "Variables", mousePos, context, dropInstance);
            menu = flowGraph.AppendMacroNodesMenu(menu, "MACROS", mousePos, context, dropInstance);
            menu = flowGraph.AppendMenuCallbackReceivers(menu, "", mousePos, context, dropInstance);
            return(menu);
        }