private void addExpression(string _uuid, BlockModel.Block _block, Dictionary <string, string> _variants, CustomElementModel.CustomElementStatus _elementStatus,
                                   List <BlockModel.Element> _elements, BlockBuilder.Symbol _symbol)
        {
            GameObject clone = GameObject.Instantiate(uiWorkbench.templateExpression.gameObject);

            clone.transform.SetParent(uiWorkbench.templateExpression.parent);
            clone.transform.localScale = Vector3.one;
            clone.SetActive(true);
            clone.name = _uuid;
            BlockBuilder.BuildExpression(_elements, _variants, clone, _elementStatus, _symbol, _block.color);
        }
        private void addBlock(string _uuid, BlockModel.Block _block, Dictionary <string, string> _variants, CustomElementModel.CustomElementStatus _elementStatus)
        {
            if (null == _block)
            {
                return;
            }

            BlockBuilder.Symbol symbol = BlockBuilder.LineToSymbol(_block, 0);
            addExpression(_uuid, _block, _variants, _elementStatus, _block.elements[0], symbol);
            for (int line = 1; line < _block.elements.Count; ++line)
            {
                addExpression(_uuid, _block, _variants, _elementStatus, new List <BlockModel.Element>(0), BlockBuilder.Symbol.Blank);
                symbol = BlockBuilder.LineToSymbol(_block, line);
                addExpression(_uuid, _block, _variants, _elementStatus, _block.elements[line], symbol);
            }
        }