// ===================================================================
        // BUILDER
        // -------------------------------------------------------------------
        /// Creates a port editor window at the given screen position.
        ///
        /// @param screenPosition The screen position where the editor
        ///                       should be displayed.
        ///
        public static EditorWindow Create(iCS_EditorObject node, Vector2 screenPosition)
        {
            if (node == null)
            {
                return(null);
            }
            if (node.IsEventHandler)
            {
                return(EventHandlerEditor.Create(node, screenPosition));
            }
            if (node.IsFunctionDefinition)
            {
                return(FunctionDefinitionEditor.Create(node, screenPosition));
            }
            if (node.IsInstanceNode)
            {
                return(PropertyEditor.Create(node, screenPosition));
            }
            if (node.IsInlineCode)
            {
                return(InlineCodeEditor.Create(node, screenPosition));
            }
            var self = NodeEditor.CreateInstance <NodeEditor>();

            self.vsObject = node;
            Texture2D iCanScriptLogo = null;

            TextureCache.GetTexture(iCS_EditorStrings.TitleLogoIcon, out iCanScriptLogo);
            self.titleContent = new GUIContent("Node Editor", iCanScriptLogo);
            self.ShowUtility();
            return(self);
        }
        // ===================================================================
        // BUILDER
        // -------------------------------------------------------------------
        /// Creates a port editor window at the given screen position.
        ///
        /// @param screenPosition The screen position where the editor
        ///                       should be displayed.
        ///
        public static new EditorWindow Create(iCS_EditorObject node, Vector2 screenPosition)
        {
            if (node == null)
            {
                return(null);
            }
            var self = FunctionDefinitionEditor.CreateInstance <FunctionDefinitionEditor>();

            self.vsObject = node;
            Texture2D iCanScriptLogo = null;

            TextureCache.GetTexture(iCS_EditorStrings.TitleLogoIcon, out iCanScriptLogo);
            self.titleContent = new GUIContent("Function Definition Editor", iCanScriptLogo);
            self.ShowUtility();
            return(self);
        }