diff --git a/CHANGES b/CHANGES
index 1e09b97..afa9061 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,8 @@
+3.6.4
+Bug Fixes:
+* Refactored single-star wildcard segment (*) handling to enable filtering
+  matches when subsequent segments exist; this fixes Issue #154.
+
 3.6.3
 Bug Fixes:
 * The eyaml-rotate-keys command-line tool failed to preserve block-style EYAML
diff --git a/yamlpath/__init__.py b/yamlpath/__init__.py
index 17f456c..a47c822 100644
--- a/yamlpath/__init__.py
+++ b/yamlpath/__init__.py
@@ -1,6 +1,6 @@
 """Core YAML Path classes."""
 # Establish the version number common to all components
-__version__ = "3.6.3"
+__version__ = "3.6.4"
 
 from yamlpath.yamlpath import YAMLPath
 from yamlpath.processor import Processor
diff --git a/yamlpath/enums/pathsegmenttypes.py b/yamlpath/enums/pathsegmenttypes.py
index 489d9e0..4c9a402 100644
--- a/yamlpath/enums/pathsegmenttypes.py
+++ b/yamlpath/enums/pathsegmenttypes.py
@@ -36,6 +36,9 @@ class PathSegmentTypes(Enum):
         Traverses the document tree deeply.  If there is a next segment, it
         must match or no data is matched.  When there is no next segment, every
         leaf node matches.
+
+    `MATCH_ALL`
+        Matches every immediate child node.
     """
 
     ANCHOR = auto()
@@ -45,3 +48,4 @@ class PathSegmentTypes(Enum):
     SEARCH = auto()
     TRAVERSE = auto()
     KEYWORD_SEARCH = auto()
+    MATCH_ALL = auto()
diff --git a/yamlpath/processor.py b/yamlpath/processor.py
index 7c97027..38e301c 100644
--- a/yamlpath/processor.py
+++ b/yamlpath/processor.py
@@ -839,6 +839,11 @@ class Processor:
             node_coords = self._get_nodes_by_index(
                 data, yaml_path, segment_index,
                 translated_path=translated_path, ancestry=ancestry)
+        elif segment_type == PathSegmentTypes.MATCH_ALL:
+            node_coords = self._get_nodes_by_match_all(
+                data, yaml_path, segment_index, parent=parent,
+                parentref=parentref, translated_path=translated_path,
+                ancestry=ancestry)
         elif segment_type == PathSegmentTypes.ANCHOR:
             node_coords = self._get_nodes_by_anchor(
                 data, yaml_path, segment_index,
@@ -1894,6 +1899,244 @@ class Processor:
                             data=node_coord)
                         yield node_coord
 
+    def _get_nodes_by_match_all_unfiltered(
+        self, data: Any, yaml_path: YAMLPath, segment_index: int, **kwargs: Any
+    ) -> Generator[Any, None, None]:
+        """
+        Yield every immediate, non-leaf child node.
+
+        Parameters:
+        1. data (ruamel.yaml data) The parsed YAML data to process
+        2. yaml_path (yamlpath.Path) The YAML Path being processed
+        3. segment_index (int) Segment index of the YAML Path to process
+
+        Keyword Arguments:
+        * parent (ruamel.yaml node) The parent node from which this query
+          originates
+        * parentref (Any) The Index or Key of data within parent
+        * translated_path (YAMLPath) YAML Path indicating precisely which node
+          is being evaluated
+        * ancestry (List[AncestryEntry]) Stack of ancestors preceding the
+          present node under evaluation
+
+        Returns:  (Generator[Any, None, None]) Each node coordinate as they are
+        matched.
+        """
+        dbg_prefix="Processor::_get_nodes_by_match_all_unfiltered:  "
+        parent: Any = kwargs.pop("parent", None)
+        parentref: Any = kwargs.pop("parentref", None)
+        translated_path: YAMLPath = kwargs.pop("translated_path", YAMLPath(""))
+        ancestry: List[AncestryEntry] = kwargs.pop("ancestry", [])
+        segments = yaml_path.escaped
+        pathseg: PathSegment = segments[segment_index]
+
+        self.logger.debug(
+            "Gathering ALL immediate children in the tree at parentref,"
+            f" {parentref}, in data:",
+            prefix=dbg_prefix, data=data)
+
+        if isinstance(data, (CommentedMap, dict)):
+            self.logger.debug(
+                "Iterating over all keys to find ANY matches in data:",
+                prefix=dbg_prefix, data=data)
+            for key, val in data.items():
+                next_translated_path = (
+                    translated_path + YAMLPath.escape_path_section(
+                        key, translated_path.seperator))
+                next_ancestry = ancestry + [(data, key)]
+                self.logger.debug(
+                    f"Yielding dict value at key, {key} from data:",
+                    prefix=dbg_prefix, data={'VAL': val, 'OF_DATA': data})
+                yield NodeCoords(val, data, key, next_translated_path,
+                    next_ancestry, pathseg)
+            return
+
+        if isinstance(data, (CommentedSeq, list)):
+            for idx, ele in enumerate(data):
+                next_translated_path = translated_path + f"[{idx}]"
+                next_ancestry = ancestry + [(data, idx)]
+                self.logger.debug(
+                    f"Yielding list element at index, {idx}:",
+                    prefix=dbg_prefix, data=ele)
+                yield NodeCoords(ele, data, idx, next_translated_path,
+                    next_ancestry, pathseg)
+            return
+
+        if isinstance(data, (CommentedSet, set)):
+            for ele in data:
+                next_translated_path = (
+                    translated_path + YAMLPath.escape_path_section(
+                        ele, translated_path.seperator))
+                self.logger.debug(
+                    "Yielding set element:",
+                    prefix=dbg_prefix, data=ele)
+                yield NodeCoords(
+                    ele, parent, ele, next_translated_path, ancestry, pathseg)
+            return
+
+        self.logger.debug(
+            "NOT yielding Scalar node (* excludes scalars):",
+            prefix=dbg_prefix, data=data)
+        return
+
+    def _get_nodes_by_match_all_filtered(
+        self, data: Any, yaml_path: YAMLPath, segment_index: int, **kwargs: Any
+    ) -> Generator[Any, None, None]:
+        """
+        Yield immediate child nodes whose children match additional filters.
+
+        Parameters:
+        1. data (ruamel.yaml data) The parsed YAML data to process
+        2. yaml_path (yamlpath.Path) The YAML Path being processed
+        3. segment_index (int) Segment index of the YAML Path to process
+
+        Keyword Arguments:
+        * parent (ruamel.yaml node) The parent node from which this query
+          originates
+        * parentref (Any) The Index or Key of data within parent
+        * translated_path (YAMLPath) YAML Path indicating precisely which node
+          is being evaluated
+        * ancestry (List[AncestryEntry]) Stack of ancestors preceding the
+          present node under evaluation
+
+        Returns:  (Generator[Any, None, None]) Each node coordinate as they are
+        matched.
+        """
+        dbg_prefix="Processor::_get_nodes_by_match_all_filtered:  "
+        parentref: Any = kwargs.pop("parentref", None)
+        translated_path: YAMLPath = kwargs.pop("translated_path", YAMLPath(""))
+        ancestry: List[AncestryEntry] = kwargs.pop("ancestry", [])
+        segments = yaml_path.escaped
+        pathseg: PathSegment = segments[segment_index]
+        next_segment_idx: int = segment_index + 1
+
+        self.logger.debug(
+            "FILTERING children in the tree at parentref,"
+            f" {parentref}, of data:",
+            prefix=dbg_prefix, data=data)
+
+        # There is a filter on this segment.  Return nodes from the present
+        # data if-and-only-if any of their immediate children will match the
+        # filter.  Do not return the child nodes; the caller will continue to
+        # process subsequent path segments to yield them.
+        if isinstance(data, dict):
+            self.logger.debug(
+                "Iterating over all keys to find ANY matches in data:",
+                prefix=dbg_prefix, data=data)
+            for key, val in data.items():
+                next_translated_path = (
+                    translated_path + YAMLPath.escape_path_section(
+                        key, translated_path.seperator))
+                next_ancestry = ancestry + [(data, key)]
+                for filtered_nc in self._get_nodes_by_path_segment(
+                    val, yaml_path, next_segment_idx, parent=data,
+                    parentref=key, translated_path=next_translated_path,
+                    ancestry=next_ancestry
+                ):
+                    self.logger.debug(
+                        "Ignoring yielded child node coordinate to yield its"
+                        " successfully matched, filtered dict val parent for"
+                        f" key, {key}:"
+                        , prefix=dbg_prefix
+                        , data={
+                            'VAL': val
+                            , 'OF_DATA': data
+                            , 'IGNORING': filtered_nc
+                        })
+                    yield NodeCoords(
+                        val, data, key, next_translated_path, next_ancestry,
+                        pathseg
+                    )
+                    break # because we need only the matching parent
+            return
+
+        if isinstance(data, list):
+            for idx, ele in enumerate(data):
+                self.logger.debug(
+                    f"Recursing into INDEX '{idx}' at ref '{parentref}' for"
+                    " next-segment matches...", prefix=dbg_prefix)
+                next_translated_path = translated_path + f"[{idx}]"
+                next_ancestry = ancestry + [(data, idx)]
+                for filtered_nc in self._get_nodes_by_path_segment(
+                    ele, yaml_path, next_segment_idx, parent=data,
+                    parentref=idx, translated_path=next_translated_path,
+                    ancestry=next_ancestry
+                ):
+                    self.logger.debug(
+                        "Ignoring yielded child node coordinate to yield its"
+                        " successfully matched, filtered list ele parent for"
+                        f" idx, {idx}:"
+                        , prefix=dbg_prefix
+                        , data={
+                            'ELE': ele
+                            , 'OF_DATA': data
+                            , 'IGNORING': filtered_nc
+                        })
+                    yield NodeCoords(
+                        ele, data, idx, next_translated_path, next_ancestry,
+                        pathseg
+                    )
+                    break # because we need only the matching parent
+            return
+
+    def _get_nodes_by_match_all(
+        self, data: Any, yaml_path: YAMLPath, segment_index: int, **kwargs: Any
+    ) -> Generator[Any, None, None]:
+        """
+        Yield every immediate child node.
+
+        Parameters:
+        1. data (ruamel.yaml data) The parsed YAML data to process
+        2. yaml_path (yamlpath.Path) The YAML Path being processed
+        3. segment_index (int) Segment index of the YAML Path to process
+
+        Keyword Arguments:
+        * parent (ruamel.yaml node) The parent node from which this query
+          originates
+        * parentref (Any) The Index or Key of data within parent
+        * translated_path (YAMLPath) YAML Path indicating precisely which node
+          is being evaluated
+        * ancestry (List[AncestryEntry]) Stack of ancestors preceding the
+          present node under evaluation
+
+        Returns:  (Generator[Any, None, None]) Each node coordinate as they are
+        matched.
+        """
+        dbg_prefix="Processor::_get_nodes_by_match_all:  "
+        parent: Any = kwargs.pop("parent", None)
+        parentref: Any = kwargs.pop("parentref", None)
+        translated_path: YAMLPath = kwargs.pop("translated_path", YAMLPath(""))
+        ancestry: List[AncestryEntry] = kwargs.pop("ancestry", [])
+
+        segments = yaml_path.escaped
+        next_segment_idx: int = segment_index + 1
+        filter_results = next_segment_idx < len(segments)
+
+        self.logger.debug(
+            "Processing either FILTERED or UNFILTERED nodes from data:"
+            , prefix=dbg_prefix, data=data)
+
+        if filter_results:
+            # Of data, yield every node which has children matching next seg
+            all_coords = self._get_nodes_by_match_all_filtered(
+                data, yaml_path, segment_index,
+                parent=parent, parentref=parentref,
+                translated_path=translated_path, ancestry=ancestry
+            )
+        else:
+            # Of data, yield every node
+            all_coords = self._get_nodes_by_match_all_unfiltered(
+                data, yaml_path, segment_index,
+                parent=parent, parentref=parentref,
+                translated_path=translated_path, ancestry=ancestry
+            )
+
+        for all_coord in all_coords:
+            self.logger.debug(
+                "Yielding matched child node of source data:"
+                , prefix=dbg_prefix, data={'NODE': all_coord, 'DATA': data})
+            yield all_coord
+
     def _get_required_nodes(
         self, data: Any, yaml_path: YAMLPath, depth: int = 0, **kwargs: Any
     ) -> Generator[NodeCoords, None, None]:
diff --git a/yamlpath/yamlpath.py b/yamlpath/yamlpath.py
index 759bafd..132e8e1 100644
--- a/yamlpath/yamlpath.py
+++ b/yamlpath/yamlpath.py
@@ -798,10 +798,9 @@ class YAMLPath:
             segment_len = len(segment_id)
             if splat_count == 1:
                 if segment_len == 1:
-                    # /*/ -> [.=~/.*/]
-                    coal_type = PathSegmentTypes.SEARCH
-                    coal_value = SearchTerms(
-                        False, PathSearchMethods.REGEX, ".", ".*")
+                    # /*/ -> MATCH_ALL
+                    coal_type = PathSegmentTypes.MATCH_ALL
+                    coal_value = None
                 elif splat_pos == 0:
                     # /*text/ -> [.$text]
                     coal_type = PathSegmentTypes.SEARCH
@@ -877,6 +876,10 @@ class YAMLPath:
                 )
             elif segment_type == PathSegmentTypes.INDEX:
                 ppath += "[{}]".format(segment_attrs)
+            elif segment_type == PathSegmentTypes.MATCH_ALL:
+                if add_sep:
+                    ppath += pathsep
+                ppath += "*"
             elif segment_type == PathSegmentTypes.ANCHOR:
                 if add_sep:
                     ppath += "[&{}]".format(segment_attrs)
@@ -886,17 +889,7 @@ class YAMLPath:
                 ppath += str(segment_attrs)
             elif (segment_type == PathSegmentTypes.SEARCH
                   and isinstance(segment_attrs, SearchTerms)):
-                terms: SearchTerms = segment_attrs
-                if (terms.method == PathSearchMethods.REGEX
-                    and terms.attribute == "."
-                    and terms.term == ".*"
-                    and not terms.inverted
-                ):
-                    if add_sep:
-                        ppath += pathsep
-                    ppath += "*"
-                else:
-                    ppath += str(segment_attrs)
+                ppath += str(segment_attrs)
             elif segment_type == PathSegmentTypes.COLLECTOR:
                 ppath += str(segment_attrs)
             elif segment_type == PathSegmentTypes.TRAVERSE:

diff --git a/tests/test_processor.py b/tests/test_processor.py
index a205d18..34e6ebd 100644
--- a/tests/test_processor.py
+++ b/tests/test_processor.py
@@ -82,7 +82,11 @@ class Test_Processor():
         ("/array_of_hashes/**", [1, "one", 2, "two"], True, None),
         ("products_hash.*[dimensions.weight==4].(availability.start.date)+(availability.stop.date)", [[date(2020, 8, 1), date(2020, 9, 25)], [date(2020, 1, 1), date(2020, 1, 1)]], True, None),
         ("products_array[dimensions.weight==4].product", ["doohickey", "widget"], True, None),
-        ("(products_hash.*.dimensions.weight)[max()][parent(2)].dimensions.weight", [10], True, None)
+        ("(products_hash.*.dimensions.weight)[max()][parent(2)].dimensions.weight", [10], True, None),
+        ("/Locations/*/*", ["ny", "bstn"], True, None),
+        ("/AoH_Locations/*/*/*", ["nyc", "bo"], True, None),
+        ("/Weird_AoH_Locations/*/*/*", ["nyc", "bstn"], True, None),
+        ("/Set_Locations/*/*", ["New York", "Boston"], True, None),
     ])
     def test_get_nodes(self, quiet_logger, yamlpath, results, mustexist, default):
         yamldata = """---
@@ -222,7 +226,35 @@ products_array:
       height: 10
       depth: 1
       weight: 4
+
 ###############################################################################
+# For wildcard matching (#154)
+Locations:
+  United States:
+    New York: ny
+    Boston: bstn
+  Canada: cnd
+
+AoH_Locations:
+  - United States: us
+    New York:
+      New York City: nyc
+    Massachussets:
+      Boston: bo
+  - Canada: ca
+
+# Weird Array-of-Hashes
+Weird_AoH_Locations:
+  - United States:
+      New York: nyc
+      Boston: bstn
+  - Canada: cnd
+
+Set_Locations:
+  United States: !!set
+    ? New York
+    ? Boston
+  Canada:
 """
         yaml = YAML()
         processor = Processor(quiet_logger, yaml.load(yamldata))

Unexpected nodes returned for grandchild query /Locations/*/*
## Operating System

1. Name/Distribution: Windows 10 Home
2. Version: 10.0.19043 Build 19043

## Version of Python and packages in use at the time of the issue.

1. [Distribution](https://wiki.python.org/moin/PythonDistributions): CPython (for Windows) from python.org
2. Python Version: 3.7
3. Version of yamlpath installed: 3.6.3
4. Version of ruamel.yaml installed: 0.17.10

## Minimum sample of YAML (or compatible) data necessary to trigger the issue

```yaml
---
Locations:
    United States:
        New York:
        Boston:
    Canada:
```

## Complete steps to reproduce the issue when triggered via:

1. Command-Line Tools (yaml-get, yaml-set, or eyaml-rotate-keys):  Precise command-line arguments which trigger the defect. 
2. Libraries (yamlpath.*):  Minimum amount of code necessary to trigger the defect.

#I thought that a complete unittest might be the most helpful way to demonstrate my issue. Please let me know if another format would be more helpful.

```python
import unittest
import yamlpath
from yamlpath.wrappers import ConsolePrinter
from yamlpath.common import Parsers
from yamlpath import Processor
from yamlpath.exceptions.yamlpathexception import YAMLPathException
from types import SimpleNamespace

class IssueReportTest(unittest.TestCase):
    
    def setUp(self):
        pass
    
    def tearDown(self):
        pass
    
    def test_retrieveGrandChildren_OnlyGrandChildrenAreReturned(self):
        yamlTagHierarchy = '''---
        Locations:
            United States:
                New York:
                Boston:
            Canada:
        '''
        
        logging_args = SimpleNamespace(quiet=True, verbose=False, debug=False)
        self._log = ConsolePrinter(logging_args)
        self._editor = Parsers.get_yaml_editor()
        (yaml_data, doc_loaded) = Parsers.get_yaml_data(self._editor, self._log, yamlTagHierarchy, literal=True)
        self._processor = Processor(self._log, yaml_data)
        
        nodes = list(self._processor.get_nodes("/Locations/*/*"))
        self.assertEqual(nodes[0].parentref, "New York")
        self.assertEqual(nodes[1].parentref, "Boston")
        self.assertEqual(len(nodes), 2, f"Node '{nodes[2].parentref}' should not be part of this list, or?")
```

## Expected Outcome
When I try to select a specific level of descendant nodes using child and wildcard operators I expect to receive only nodes at the requested level. For example, in the above sample I expect   "/Locations/*/*" to return "New York" and "Boston" (grandchildren of "Locations")

## Actual Outcome
If another branch of the yaml tree ends above the requested level, the query returns the last leaf on that branch. The above example returns "Canada" in addition to "New York" and "Boston", which is surprising to me as "Canada" is merely a child of "Location", while "New York" and "Boston" are grandchildren. I haven't been able to identify an easy way to distinguish the child from the grandchild nodes.

## Thank you
Thanks so much for considering this. I was thrilled to find yamlpath for a hobby project and really appreciate the library. I hope that I'm actually reporting a real issue rather than flaunting my ignorance of how the wildcard operator should work.

tests/test_processor.py::Test_Processor::test_get_nodes[/Locations/*/*-results38-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[/AoH_Locations/*/*/*-results39-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[/Weird_AoH_Locations/*/*/*-results40-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[/Set_Locations/*/*-results41-True-None]
tests/test_processor.py::Test_Processor::test_get_none_data_nodes tests/test_processor.py::Test_Processor::test_get_nodes[aliases[&aliasAnchorOne]-results0-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[aliases[&newAlias]-results1-False-Not tests/test_processor.py::Test_Processor::test_get_nodes[aliases[0]-results2-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[aliases.0-results3-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[(array_of_hashes.name)+(rollback_hashes.on_condition.failure.name)-results4-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[/array_of_hashes/name-results5-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[aliases[1:2]-results6-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[aliases[1:1]-results7-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[squads[bravo:charlie]-results8-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[/&arrayOfHashes/1/step-results9-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[&arrayOfHashes[step=1].name-results10-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[squads[.!=][.=1.1]-results11-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[squads[.!=][.>1.1][.<3.3]-results12-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[aliases[.^Hey]-results13-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[aliases[.$Value]-results14-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[aliases[.%Value]-results15-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[&arrayOfHashes[step>1].name-results16-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[&arrayOfHashes[step<2].name-results17-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[squads[.>charlie]-results18-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[squads[.>=charlie]-results19-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[squads[.<bravo]-results20-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[squads[.<=bravo]-results21-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[squads[.=~/^\\w{6,}$/]-results22-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[squads[alpha=1.1]-results23-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[(&arrayOfHashes.step)+(/rollback_hashes/on_condition/failure/step)-(disabled_steps)-results24-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[(&arrayOfHashes.step)+((/rollback_hashes/on_condition/failure/step)-(disabled_steps))-results25-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[(disabled_steps)+(&arrayOfHashes.step)-results26-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[(&arrayOfHashes.step)+(disabled_steps)[1]-results27-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[((&arrayOfHashes.step)[1])[0]-results28-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[does.not.previously.exist[7]-results29-False-Huzzah!] tests/test_processor.py::Test_Processor::test_get_nodes[/number_keys/1-results30-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[**.[.^Hey]-results31-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[/**/Hey*-results32-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[lots_of_names.**.name-results33-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[/array_of_hashes/**-results34-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[products_hash.*[dimensions.weight==4].(availability.start.date)+(availability.stop.date)-results35-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[products_array[dimensions.weight==4].product-results36-True-None] tests/test_processor.py::Test_Processor::test_get_nodes[(products_hash.*.dimensions.weight)[max()][parent(2)].dimensions.weight-results37-True-None] tests/test_processor.py::Test_Processor::test_get_from_sets[True-baseball_legends-results0-None] tests/test_processor.py::Test_Processor::test_get_from_sets[True-baseball_legends.*bb-results1-None] tests/test_processor.py::Test_Processor::test_get_from_sets[True-baseball_legends[A:S]-results2-None] tests/test_processor.py::Test_Processor::test_get_from_sets[True-baseball_legends[2]-results3-Array tests/test_processor.py::Test_Processor::test_get_from_sets[True-baseball_legends[&bl_anchor]-results4-None] tests/test_processor.py::Test_Processor::test_get_from_sets[True-baseball_legends([A:M])+([T:Z])-results5-None] tests/test_processor.py::Test_Processor::test_get_from_sets[True-baseball_legends([A:Z])-([S:Z])-results6-None] tests/test_processor.py::Test_Processor::test_get_from_sets[True-**-results7-None] tests/test_processor.py::Test_Processor::test_get_from_sets[False-baseball_legends-results8-None] tests/test_processor.py::Test_Processor::test_get_from_sets[False-baseball_legends.*bb-results9-None] tests/test_processor.py::Test_Processor::test_get_from_sets[False-baseball_legends[A:S]-results10-None] tests/test_processor.py::Test_Processor::test_get_from_sets[False-baseball_legends[2]-results11-Array tests/test_processor.py::Test_Processor::test_get_from_sets[False-baseball_legends[&bl_anchor]-results12-None] tests/test_processor.py::Test_Processor::test_get_from_sets[False-baseball_legends([A:M])+([T:Z])-results13-None] tests/test_processor.py::Test_Processor::test_get_from_sets[False-baseball_legends([A:Z])-([S:Z])-results14-None] tests/test_processor.py::Test_Processor::test_get_from_sets[False-**-results15-None] tests/test_processor.py::Test_Processor::test_get_from_sets[False-baseball_legends(rbi)+(errate)-results16-Cannot tests/test_processor.py::Test_Processor::test_get_from_sets[False-baseball_legends.Ted\\ tests/test_processor.py::Test_Processor::test_change_values_in_sets[aliases[&bl_anchor]-REPLACEMENT-**.&bl_anchor-2] tests/test_processor.py::Test_Processor::test_change_values_in_sets[baseball_legends.Sammy\\ tests/test_processor.py::Test_Processor::test_delete_from_sets[**[&bl_anchor]-old_deleted_nodes0-new_flat_data0] tests/test_processor.py::Test_Processor::test_delete_from_sets[/baseball_legends/Ken\\ tests/test_processor.py::Test_Processor::test_enforce_pathsep tests/test_processor.py::Test_Processor::test_get_impossible_nodes_error[abc-True] tests/test_processor.py::Test_Processor::test_get_impossible_nodes_error[/ints/[.=4F]-True] tests/test_processor.py::Test_Processor::test_get_impossible_nodes_error[/ints/[.>4F]-True] tests/test_processor.py::Test_Processor::test_get_impossible_nodes_error[/ints/[.<4F]-True] tests/test_processor.py::Test_Processor::test_get_impossible_nodes_error[/ints/[.>=4F]-True] tests/test_processor.py::Test_Processor::test_get_impossible_nodes_error[/ints/[.<=4F]-True] tests/test_processor.py::Test_Processor::test_get_impossible_nodes_error[/floats/[.=4.F]-True] tests/test_processor.py::Test_Processor::test_get_impossible_nodes_error[/floats/[.>4.F]-True] tests/test_processor.py::Test_Processor::test_get_impossible_nodes_error[/floats/[.<4.F]-True] tests/test_processor.py::Test_Processor::test_get_impossible_nodes_error[/floats/[.>=4.F]-True] tests/test_processor.py::Test_Processor::test_get_impossible_nodes_error[/floats/[.<=4.F]-True] tests/test_processor.py::Test_Processor::test_get_impossible_nodes_error[abc.**-True] tests/test_processor.py::Test_Processor::test_illegal_traversal_recursion tests/test_processor.py::Test_Processor::test_set_value_in_empty_data tests/test_processor.py::Test_Processor::test_set_value_in_none_data tests/test_processor.py::Test_Processor::test_set_value[aliases[&testAnchor]-Updated tests/test_processor.py::Test_Processor::test_set_value[yamlpath1-New tests/test_processor.py::Test_Processor::test_set_value[/top_array/2-42-1-False-YAMLValueFormats.INT-/] tests/test_processor.py::Test_Processor::test_set_value[/top_hash/positive_float-0.009-1-True-YAMLValueFormats.FLOAT-/] tests/test_processor.py::Test_Processor::test_set_value[/top_hash/negative_float--0.009-1-True-YAMLValueFormats.FLOAT-/] tests/test_processor.py::Test_Processor::test_set_value[/top_hash/positive_float--2.71828-1-True-YAMLValueFormats.FLOAT-/] tests/test_processor.py::Test_Processor::test_set_value[/top_hash/negative_float-5283.4-1-True-YAMLValueFormats.FLOAT-/] tests/test_processor.py::Test_Processor::test_set_value[/null_value-No tests/test_processor.py::Test_Processor::test_set_value[(top_array[0])+(top_hash.negative_float)+(/null_value)-REPLACEMENT-3-True-YAMLValueFormats.DEFAULT-/] tests/test_processor.py::Test_Processor::test_set_value[(((top_array[0])+(top_hash.negative_float))+(/null_value))-REPLACEMENT-3-False-YAMLValueFormats.DEFAULT-/] tests/test_processor.py::Test_Processor::test_cannot_set_nonexistent_required_node_error tests/test_processor.py::Test_Processor::test_none_data_to_get_nodes_by_path_segment tests/test_processor.py::Test_Processor::test_bad_segment_index_for_get_nodes_by_path_segment tests/test_processor.py::Test_Processor::test_get_nodes_by_unknown_path_segment_error tests/test_processor.py::Test_Processor::test_non_int_slice_error tests/test_processor.py::Test_Processor::test_non_int_array_index_error tests/test_processor.py::Test_Processor::test_nonexistant_path_search_method_error tests/test_processor.py::Test_Processor::test_adjoined_collectors_error tests/test_processor.py::Test_Processor::test_no_attrs_to_arrays_error tests/test_processor.py::Test_Processor::test_no_index_to_hashes_error tests/test_processor.py::Test_Processor::test_get_nodes_array_impossible_type_error tests/test_processor.py::Test_Processor::test_no_attrs_to_scalars_errors tests/test_processor.py::Test_Processor::test_key_anchor_changes[/anchorKeys[&keyOne]-Set tests/test_processor.py::Test_Processor::test_key_anchor_changes[/hash[&keyTwo]-Confirm-1-True-YAMLValueFormats.DEFAULT-.] tests/test_processor.py::Test_Processor::test_key_anchor_changes[/anchorKeys[&recursiveAnchorKey]-Recurse tests/test_processor.py::Test_Processor::test_key_anchor_changes[/hash[&recursiveAnchorKey]-Recurse tests/test_processor.py::Test_Processor::test_key_anchor_children tests/test_processor.py::Test_Processor::test_cannot_add_novel_alias_keys tests/test_processor.py::Test_Processor::test_set_nonunique_values[number-5280-verifications0] tests/test_processor.py::Test_Processor::test_set_nonunique_values[aliases[&alias_number]-5280-verifications1] tests/test_processor.py::Test_Processor::test_set_nonunique_values[bool-False-verifications2] tests/test_processor.py::Test_Processor::test_set_nonunique_values[aliases[&alias_bool]-False-verifications3] tests/test_processor.py::Test_Processor::test_get_singular_collectors[(temps[. tests/test_processor.py::Test_Processor::test_scalar_collectors[(/list1) tests/test_processor.py::Test_Processor::test_scalar_collectors[(/list2) tests/test_processor.py::Test_Processor::test_scalar_collectors[((/list1) tests/test_processor.py::Test_Processor::test_scalar_collectors[(((/list1) tests/test_processor.py::Test_Processor::test_collector_math[(hash.*)-(array[1])-results0] tests/test_processor.py::Test_Processor::test_collector_math[(hash)-(hoh.two.*)-results1] tests/test_processor.py::Test_Processor::test_collector_math[(aoa)-(hoa.two)-results2] tests/test_processor.py::Test_Processor::test_collector_math[(aoh)-(aoh[max(key1)])-results3] tests/test_processor.py::Test_Processor::test_get_every_data_type tests/test_processor.py::Test_Processor::test_delete_nodes[delete_yamlpath0-/-old_deleted_nodes0-new_flat_data0] tests/test_processor.py::Test_Processor::test_delete_nodes[records[1]-.-old_deleted_nodes1-new_flat_data1] tests/test_processor.py::Test_Processor::test_null_docs_have_nothing_to_delete tests/test_processor.py::Test_Processor::test_null_docs_have_nothing_to_gather_and_alias tests/test_processor.py::Test_Processor::test_null_docs_have_nothing_to_alias tests/test_processor.py::Test_Processor::test_null_docs_have_nothing_to_gather_and_ymk tests/test_processor.py::Test_Processor::test_null_docs_have_nothing_to_ymk tests/test_processor.py::Test_Processor::test_null_docs_have_nothing_to_tag tests/test_processor.py::Test_Processor::test_anchor_nodes[alias_path0-anchor_path0--/] tests/test_processor.py::Test_Processor::test_anchor_nodes[a_hash.a_key-some_key--.] tests/test_processor.py::Test_Processor::test_ymk_nodes[target-source--.-validations0] tests/test_processor.py::Test_Processor::test_ymk_nodes[change_path1-ymk_path1--.-validations1] tests/test_processor.py::Test_Processor::test_ymk_nodes[/target-/source--/-validations2] tests/test_processor.py::Test_Processor::test_ymk_nodes[target-source-custom_name-.-validations3] tests/test_processor.py::Test_Processor::test_tag_nodes[yaml_path0-!taggidy-/] tests/test_processor.py::Test_Processor::test_tag_nodes[key-taggidy-.] tests/test_processor.py::Test_Processor::test_rename_dict_key[yaml_path0-renamed_key-old_data0-new_data0] tests/test_processor.py::Test_Processor::test_rename_dict_key_cannot_overwrite[yaml_path0-renamed_key-old_data0] tests/test_processor.py::Test_Processor::test_traverse_with_null tests/test_processor.py::Test_Processor::test_yaml_merge_keys_access[reuse1.key12-results0] tests/test_processor.py::Test_Processor::test_yaml_merge_keys_access[reuse1.&alias_name1.key12-results1] tests/test_processor.py::Test_Processor::test_yaml_merge_keys_access[reuse1[&alias_name1].key12-results2] tests/test_processor.py::Test_Processor::test_yaml_merge_key_queries[/list*[has_child(&anchored_value)][name()]-results0] tests/test_processor.py::Test_Processor::test_yaml_merge_key_queries[/list*[!has_child(&anchored_value)][name()]-results1] tests/test_processor.py::Test_Processor::test_yaml_merge_key_queries[/hash*[has_child(&anchored_hash)][name()]-results2] tests/test_processor.py::Test_Processor::test_yaml_merge_key_queries[/hash*[!has_child(&anchored_hash)][name()]-results3] tests/test_processor.py::Test_Processor::test_yaml_merge_key_queries[/hash*[has_child(&anchored_key)][name()]-results4] tests/test_processor.py::Test_Processor::test_yaml_merge_key_queries[/hash*[!has_child(&anchored_key)][name()]-results5] tests/test_processor.py::Test_Processor::test_yaml_merge_key_queries[/hash*[has_child(&anchored_value)][name()]-results6] tests/test_processor.py::Test_Processor::test_yaml_merge_key_queries[/hash*[!has_child(&anchored_value)][name()]-results7] tests/test_processor.py::Test_Processor::test_yaml_merge_key_queries[/aoh[has_child(&anchored_hash)]/intent-results8] tests/test_processor.py::Test_Processor::test_yaml_merge_key_queries[/aoh[!has_child(&anchored_hash)]/intent-results9] tests/test_processor.py::Test_Processor::test_yaml_merge_key_queries[/aoa/*[has_child(&anchored_value)][name()]-results10] tests/test_processor.py::Test_Processor::test_yaml_merge_key_queries[/aoa/*[!has_child(&anchored_value)][name()]-results11] tests/test_processor.py::Test_Processor::test_wiki_array_element_searches[temperature[. tests/test_processor.py::Test_Processor::test_wiki_collectors[consoles[. tests/test_processor.py::Test_Processor::test_wiki_collector_math[(/standard/setup/action) tests/test_processor.py::Test_Processor::test_wiki_collector_math[(/standard[.!='']/action) tests/test_processor.py::Test_Processor::test_wiki_collector_math[(/standard[.!='']/id) tests/test_processor.py::Test_Processor::test_wiki_collector_order_of_ops[(/list1) tests/test_processor.py::Test_Processor::test_wiki_collector_order_of_ops[(/list2) tests/test_processor.py::Test_Processor::test_wiki_collector_order_of_ops[((/list1) tests/test_processor.py::Test_Processor::test_wiki_search_array_of_hashes[warriors[power_level tests/test_processor.py::Test_Processor::test_wiki_search_key_names[contrast_ct[. tests/test_processor.py::Test_Processor::test_wiki_has_child[hash_of_hashes.*[!has_child(child_two)]-results0] tests/test_processor.py::Test_Processor::test_wiki_has_child[/array_of_hashes/*[!has_child(child_two)]-results1] tests/test_processor.py::Test_Processor::test_wiki_has_child[/hash_of_hashes/*[!has_child(child_two)][name()]-results2] tests/test_processor.py::Test_Processor::test_wiki_has_child[array_of_hashes.*[!has_child(child_two)].id-results3] tests/test_processor.py::Test_Processor::test_wiki_has_child[/array_of_arrays/*[!has_child(value2.1)]-results4] tests/test_processor.py::Test_Processor::test_wiki_has_child[array_of_arrays[*!=value2.1]-results5] tests/test_processor.py::Test_Processor::test_wiki_has_child[array_of_arrays.*[!has_child(value2.1)][name()]-results6] tests/test_processor.py::Test_Processor::test_wiki_has_child[/array_of_arrays[*!=value2.1][name()]-results7] tests/test_processor.py::Test_Processor::test_wiki_has_child[(/array_of_arrays/*[!has_child(value2.1)][name()])[0]-results8] tests/test_processor.py::Test_Processor::test_wiki_has_child[(array_of_arrays[*!=value2.1][name()])[0]-results9] tests/test_processor.py::Test_Processor::test_wiki_has_child[(array_of_arrays.*[!has_child(value2.1)][name()])[-1]-results10] tests/test_processor.py::Test_Processor::test_wiki_has_child[(/array_of_arrays[*!=value2.1][name()])[-1]-results11] tests/test_processor.py::Test_Processor::test_wiki_has_child[/simple_array[has_child(value1.1)]-results12] tests/test_processor.py::Test_Processor::test_wiki_has_child[/simple_array[!has_child(value1.3)]-results13] tests/test_processor.py::Test_Processor::test_wiki_min_max[/prices_aoh[max(price)]-results0] tests/test_processor.py::Test_Processor::test_wiki_min_max[/prices_hash[max(price)]-results1] tests/test_processor.py::Test_Processor::test_wiki_min_max[/prices_aoh[max(price)]/price-results2] tests/test_processor.py::Test_Processor::test_wiki_min_max[/prices_hash[max(price)]/price-results3] tests/test_processor.py::Test_Processor::test_wiki_min_max[/prices_aoh[max(price)]/product-results4] tests/test_processor.py::Test_Processor::test_wiki_min_max[/prices_hash[max(price)][name()]-results5] tests/test_processor.py::Test_Processor::test_wiki_min_max[prices_array[max()]-results6] tests/test_processor.py::Test_Processor::test_wiki_min_max[bad_prices_aoh[max(price)]-results7] tests/test_processor.py::Test_Processor::test_wiki_min_max[bad_prices_hash[max(price)]-results8] tests/test_processor.py::Test_Processor::test_wiki_min_max[bad_prices_array[max()]-results9] tests/test_processor.py::Test_Processor::test_wiki_min_max[bare[max()]-results10] tests/test_processor.py::Test_Processor::test_wiki_min_max[(prices_aoh[!max(price)])[max(price)]-results11] tests/test_processor.py::Test_Processor::test_wiki_min_max[(prices_hash[!max(price)])[max(price)]-results12] tests/test_processor.py::Test_Processor::test_wiki_min_max[(prices_aoh)-(prices_aoh[max(price)])[max(price)]-results13] tests/test_processor.py::Test_Processor::test_wiki_min_max[(prices_hash)-(prices_hash[max(price)]).*[max(price)]-results14] tests/test_processor.py::Test_Processor::test_wiki_min_max[((prices_aoh[!max(price)])[max(price)])[0]-results15] tests/test_processor.py::Test_Processor::test_wiki_min_max[((prices_hash[!max(price)])[max(price)])[0]-results16] tests/test_processor.py::Test_Processor::test_wiki_min_max[((prices_aoh[!max(price)])[max(price)])[0].price-results17] tests/test_processor.py::Test_Processor::test_wiki_min_max[((prices_hash[!max(price)])[max(price)])[0].price-results18] tests/test_processor.py::Test_Processor::test_wiki_min_max[/prices_aoh[min(price)]-results19] tests/test_processor.py::Test_Processor::test_wiki_min_max[/prices_hash[min(price)]-results20] tests/test_processor.py::Test_Processor::test_wiki_min_max[/prices_aoh[min(price)]/price-results21] tests/test_processor.py::Test_Processor::test_wiki_min_max[/prices_hash[min(price)]/price-results22] tests/test_processor.py::Test_Processor::test_wiki_min_max[/prices_aoh[min(price)]/product-results23] tests/test_processor.py::Test_Processor::test_wiki_min_max[/prices_hash[min(price)][name()]-results24] tests/test_processor.py::Test_Processor::test_wiki_min_max[prices_array[min()]-results25] tests/test_processor.py::Test_Processor::test_wiki_min_max[bad_prices_aoh[min(price)]-results26] tests/test_processor.py::Test_Processor::test_wiki_min_max[bad_prices_hash[min(price)]-results27] tests/test_processor.py::Test_Processor::test_wiki_min_max[bad_prices_array[min()]-results28] tests/test_processor.py::Test_Processor::test_wiki_min_max[bare[min()]-results29] tests/test_processor.py::Test_Processor::test_wiki_parent[**.Opal[parent()][name()]-results0] tests/test_processor.py::Test_Processor::test_wiki_parent[minerals.*.*.mohs_hardness[.>7][parent(2)][name()]-results1] tests/test_processor.py::Test_Processor::test_wiki_parent[minerals.*.*.[mohs_hardness[1]>7][name()]-results2] tests/test_processor.py::Test_Processor::test_wiki_parent[minerals.*.*(([mohs_hardness[0]>=4])-([mohs_hardness[1]>5]))[name()]-results3]