         var done:Boolean = false;
         while (!done)
         {
-            if (objectMatchesValues(hierarchicalData.getData(current), valuesToMatch))
+            if (valuesAreSubsetOfObject(valuesToMatch, hierarchicalData.getData(current)))
                 return true;
 
             done = !moveNext();

        var done:Boolean = false;
        while (!done)
        {
            if (objectMatchesValues(hierarchicalData.getData(current), valuesToMatch))
                return true;

            done = !movePrevious();

        return false;
    }

    private static function valuesAreSubsetOfObject(values:Object, object:Object):Boolean
    {
        if(!object && !values)
            return true;
