Inheritance: SearcherTemplate
        protected void GetAutomationElements(classic.TreeScope scope)
        {
            if (!CheckAndPrepareInput(this))
            {
                return;
            }

            foreach (IUiElement inputObject in InputObject)
            {
                var searchResults =
                    new List <IUiElement>();

                if (scope == classic.TreeScope.Children ||
                    scope == classic.TreeScope.Descendants)
                {
                    // WriteVerbose(this, "selected TreeScope." + scope.ToString());

                    var controlSearch =
                        AutomationFactory.GetSearcherImpl <ControlSearcher>() as ControlSearcher;

                    classic.Condition conditions =
                        ControlSearcher.GetWildcardSearchCondition(
                            controlSearch.ConvertCmdletToControlSearcherData(this));

                    IUiEltCollection temporaryResults = null;
                    if (conditions != null)
                    {
                        temporaryResults =
                            inputObject.FindAll(
                                scope,
                                conditions);

                        searchResults.AddRange(temporaryResults.Cast <IUiElement>());
                    }
                    else
                    {
                        // WriteVerbose(this, "no conditions. Performing search with TrueCondition");
                        temporaryResults =
                            inputObject.FindAll(
                                scope,
                                classic.Condition.TrueCondition);
                        if (temporaryResults.Count > 0)
                        {
//                            WriteVerbose(this,
//                                         "returned " +
//                                         temporaryResults.Count.ToString() +
//                                         " results");
                            searchResults.AddRange(temporaryResults.Cast <IUiElement>());
                        }
                    }
                    // WriteVerbose(this, "results found: " + searchResults.Count.ToString());
                    WriteObject(this, searchResults.ToArray());
                }

                if (null != searchResults)
                {
                    searchResults.Clear();
                    searchResults = null;
                }

                if (scope != classic.TreeScope.Parent && scope != classic.TreeScope.Ancestors)
                {
                    continue;
                }

                IUiElement[] outResult = inputObject.GetParentOrAncestor(scope);
                WriteObject(this, outResult);

                if (null != outResult)
                {
                    outResult = null;
                }
            }
        }