private static void GetPrimitives <TOutput>( this ITreeProgram <TOutput> program, IDictionary <ITreeProgram <TOutput>, uint> primitives) { // checks count table var prog = program.GetPrimitive(); if (!primitives.ContainsKey(prog)) { primitives.Add(prog, 0); } primitives[prog]++; // searches children if (program.Input != null) { foreach (var child in program.Input) { GetPrimitives(child, primitives); } } }