/// <summary>
        ///
        /// </summary>
        /// <param name="parent"></param>
        public static NeuralNetwork NoMutations(NeuralNetwork parent)
        {
            NeuralNetwork ret = new NeuralNetwork();

            ret.m_layers       = parent.m_layers;
            ret.m_inputNeurons = new InputNeuron[parent.m_inputNeurons.Length];
            for (int i = 0; i < ret.m_inputNeurons.Length; i++)
            {
                ret.m_inputNeurons[i] = InputNeuron.NoMutations(parent.m_inputNeurons[i]);
            }
            ret.m_hiddenNeurons = new HiddenNeuron[parent.m_hiddenNeurons.Length][];
            for (int i = 0; i < ret.m_hiddenNeurons.Length; i++)
            {
                ret.m_hiddenNeurons[i] = new HiddenNeuron[parent.m_hiddenNeurons[i].Length];
                for (int j = 0; j < ret.m_hiddenNeurons[i].Length; j++)
                {
                    ret.m_hiddenNeurons[i][j] = HiddenNeuron.NoMutations(parent.m_hiddenNeurons[i][j]);
                }
            }
            ret.m_outputNeurons = new OutputNeuron[parent.m_outputNeurons.Length];
            for (int i = 0; i < ret.m_outputNeurons.Length; i++)
            {
                ret.m_outputNeurons[i] = OutputNeuron.NoMutations(parent.m_outputNeurons[i]);
            }
            return(ret);
        }