// INTERNALS

        private void Internal_AddLayer(Layer i_ANNLayer)
        {
            if (i_ANNLayer == null || m_VisualANNLayerPrefab == null)
            {
                return;
            }

            UIWidget_VisualANNLayer newVisualLayer = Instantiate <UIWidget_VisualANNLayer>(m_VisualANNLayerPrefab);
            Transform parent = (m_ANNRoot != null) ? m_ANNRoot : transform;

            newVisualLayer.transform.SetParent(parent, false);

            newVisualLayer.Visualize(i_ANNLayer);

            m_VisualANNLayers.Add(newVisualLayer);
        }
        // LOGIC

        public void Clear()
        {
            // Destory visual layers.

            for (int layerIndex = 0; layerIndex < m_VisualANNLayers.Count; ++layerIndex)
            {
                UIWidget_VisualANNLayer visualLayer = m_VisualANNLayers[layerIndex];

                if (visualLayer == null)
                {
                    continue;
                }

                visualLayer.Clear();

                Destroy(visualLayer.gameObject);
            }

            m_VisualANNLayers.Clear();
        }