/// <summary>
        /// Adds a new placeholder port on a node.
        /// </summary>
        /// <param name="self">The node to add the new port on.</param>
        /// <param name="direction">The direction of the port the create.</param>
        /// <param name="uniqueId">The ID of the port to create.</param>
        /// <param name="orientation">The orientation of the port to create.</param>
        /// <returns>The newly created placeholder port.</returns>
        public static IPortModel AddPlaceHolderPort(this IInputOutputPortsNodeModel self, PortDirection direction, string uniqueId,
                                                    PortOrientation orientation = PortOrientation.Horizontal)
        {
            if (direction == PortDirection.Input)
            {
                return(self.AddInputPort(uniqueId, PortType.MissingPort, TypeHandle.MissingPort, uniqueId, orientation,
                                         PortModelOptions.NoEmbeddedConstant));
            }

            return(self.AddOutputPort(uniqueId, PortType.MissingPort, TypeHandle.MissingPort, uniqueId, orientation,
                                      PortModelOptions.NoEmbeddedConstant));
        }
 /// <summary>
 /// Adds a new execution output port on a node.
 /// </summary>
 /// <param name="self">The node to add the new port on.</param>
 /// <param name="portName">The name of port to create.</param>
 /// <param name="portId">The ID of the port to create.</param>
 /// <param name="orientation">The orientation of the port to create.</param>
 /// <returns>The newly created execution output port.</returns>
 public static IPortModel AddExecutionOutputPort(this IInputOutputPortsNodeModel self, string portName,
                                                 string portId = null, PortOrientation orientation = PortOrientation.Horizontal)
 {
     return(self.AddOutputPort(portName, PortType.Execution, TypeHandle.ExecutionFlow, portId, orientation));
 }
 /// <summary>
 /// Adds a new data output port on a node.
 /// </summary>
 /// <param name="self">The node to add the new port on.</param>
 /// <param name="portName">The name of port to create.</param>
 /// <param name="dataType">The type of data the port to create handles.</param>
 /// <param name="portId">The ID of the port to create.</param>
 /// <param name="orientation">The orientation of the port to create.</param>
 /// <param name="options">The options for the port to create.</param>
 /// <returns>The newly created data output port.</returns>
 public static IPortModel AddDataOutputPort(this IInputOutputPortsNodeModel self, string portName, TypeHandle dataType,
                                            string portId            = null, PortOrientation orientation = PortOrientation.Horizontal,
                                            PortModelOptions options = PortModelOptions.Default)
 {
     return(self.AddOutputPort(portName, PortType.Data, dataType, portId, orientation, options));
 }