void AddNodesAndConnectionToChild(NeuralGeneConnection ParentGenome, NeuralGenome childGenome)
    {
        NeuralGeneNode       tmpInputNode  = null;
        NeuralGeneNode       tmpOutputNode = null;
        NeuralGeneConnection tmpConnection = null;

        if (childGenome.HasNode(ParentGenome.inputNeuron.nodeNumber))
        {
            tmpInputNode = childGenome.GetNode(ParentGenome.inputNeuron.nodeNumber);
        }
        else
        {
            tmpInputNode            = AddNodeToGenome(ParentGenome.inputNeuron.nodeType, childGenome);
            tmpInputNode.bias       = ParentGenome.inputNeuron.bias;
            tmpInputNode.nodeNumber = ParentGenome.inputNeuron.nodeNumber;
        }
        if (childGenome.HasNode(ParentGenome.outputNeuron.nodeNumber))
        {
            tmpOutputNode = childGenome.GetNode(ParentGenome.outputNeuron.nodeNumber);
        }
        else
        {
            tmpOutputNode            = AddNodeToGenome(ParentGenome.outputNeuron.nodeType, childGenome);
            tmpOutputNode.bias       = ParentGenome.outputNeuron.bias;
            tmpOutputNode.nodeNumber = ParentGenome.outputNeuron.nodeNumber;
        }
        if (!childGenome.HasConnection(ParentGenome.inputNeuron.nodeNumber, ParentGenome.outputNeuron.nodeNumber))
        {
            childGenome.AddConnection(tmpInputNode, tmpOutputNode, ParentGenome.connectionIsEnabled, ParentGenome.innovation);
        }
    }