public SearchBuilder <TSource> WithParentName(Func <TSource, List <string> > parentNameLambda)
        {
            var element = new ComponentTypeAndFieldUnbuiltSearchSpecElement <TSource>();

            element.SetParentNameGetter(parentNameLambda);
            _unbuiltElements.Add(element);
            return(this);
        }
        public SearchBuilder <TSource> WithFields(Func <TSource, IDictionary <string, object> > lambda)
        {
            var element = new ComponentTypeAndFieldUnbuiltSearchSpecElement <TSource>();

            element.SetFieldGetter(lambda);
            _unbuiltElements.Add(element);
            return(this);
        }
        public SearchBuilder <TSource> WithName(string name)
        {
            var element = new ComponentTypeAndFieldUnbuiltSearchSpecElement <TSource>();

            element.SetHardcodedName(name);
            _unbuiltElements.Add(element);
            return(this);
        }
        public SearchBuilder <TSource> WithComponentType(Func <TSource, string> lambda)
        {
            var element = new ComponentTypeAndFieldUnbuiltSearchSpecElement <TSource>();

            element.SetComponentTypeGetter(lambda);
            _unbuiltElements.Add(element);
            return(this);
        }