public ExampleSpec WitnessIndexByNameName(GrammarRule rule, ExampleSpec spec)
        {
            var examples = new Dictionary <State, object>();

            foreach (var input in spec.ProvidedInputs)
            {
                var before   = (Node)input[rule.Body[0]];
                var after    = (int)spec.Examples[input];
                var children = before.GetIdentifiers();

                foreach (var child in children)
                {
                    if (Semantics.IndexByName(before, child) == after)
                    {
                        examples[input] = child;
                    }
                }
            }

            return(new ExampleSpec(examples));
        }