public void TestCompositeSum()
        {
            var singleValue = new SingleValue {
                Value = 11
            };
            var otherValues = new ManyValues();

            otherValues.Add(22);
            otherValues.Add(33);
            Assert.That(new List <IValueContainer> {
                singleValue, otherValues
            }.Sum(), Is.EqualTo(66));
        }
        static void Main(string[] args)
        {
            var drawing = new GraphicObject {
                Name = "My drawing"
            };

            drawing.Children.Add(new Square {
                Color = "Red"
            });
            drawing.Children.Add(new Circle {
                Color = "Yellow"
            });

            var group = new GraphicObject();

            group.Children.Add(new Circle {
                Color = "Blue"
            });
            group.Children.Add(new Square {
                Color = "Blue"
            });
            drawing.Children.Add(group);

            Console.WriteLine(drawing);

            //// neuron and neuron layer
            var neuron1 = new Neuron();
            var neuron2 = new Neuron();

            neuron1.ConnectTo(neuron2);

            var layer1 = new NeuronLayer();
            var layer2 = new NeuronLayer();

            neuron1.ConnectTo(layer1);
            layer1.ConnectTo(layer2);

            // exercise
            IValueContainer sv = new SingleValue {
                Value = 1
            };
            IValueContainer mv = new ManyValues {
                2, 3,
            };
            var valueContainers = new List <IValueContainer> {
                sv, mv
            };

            Console.WriteLine(valueContainers.Sum());
        }