void BuildByteCode_AppendBooleanPin(BytecodeGenContext byteCodeContext, ScriptNodeLinkCache linkCache, ICircuitPin inputPin, IList <ScriptNodeConnection> samePinLinks)
        {
            if (samePinLinks.Count != 1)
            {
                throw new Exception("Invalid link count for " + inputPin.Name);
            }

            var connection   = samePinLinks[0];
            var outElement   = connection.OutputElement;
            var outLinkCache = outElement.As <ScriptNodeLinkCache>();
        }
        // DFS traversal based bytecode gen
        void BuildByteCodeForNode(BytecodeGenContext byteCodeContext, ScriptNodeLinkCache linkCache, ICircuitPin inputPin, IList <ScriptNodeConnection> samePinLinks)
        {
            if (samePinLinks == null || samePinLinks.Count == 0) // if nothing linked just take constant
            {
                var node = linkCache.As <ScriptNode>();
                BuildByteCode_AppendPropertyValueLoad(byteCodeContext, node.DomNode, inputPin);
            }
            else
            {
                delByteCodeHandler byteCodeHandler;
                if (!m_ByteCodeGen.TryGetValue(inputPin.TypeName.ToString(), out byteCodeHandler))
                {
                    throw new Exception("Bytecode handler not found for :" + inputPin.TypeName.ToString());
                }

                byteCodeHandler(byteCodeContext, linkCache, inputPin, samePinLinks);
            }
            //
        }
 void BuildByteCode_AppendIntPin(BytecodeGenContext byteCodeContext, ScriptNodeLinkCache linkCache, ICircuitPin inputPin, IList <ScriptNodeConnection> samePinLinks)
 {
 }
 IList <ScriptNodeConnection> GetSignalOutputs(ScriptNodeLinkCache link)
 {
     return(link.FromThisNode.Where(x => x.OutputPin.TypeName == "Signal").ToList());
 }