 			if (doNext)
 				nextToken(token);
 			
-//			trace(token);
-
 			return token;
 		}
 		

			
			_selection.length = 0;
			for each (var node : ISceneNode in selection)
				_selection.push(node.parent);
		}
		
		private function parseNodeType() : void
		{
			var nodeType 	: String 				= getToken(true).toLowerCase();
			var numNodes	: int					= _selection.length;
			var selection	: Vector.<ISceneNode>	= _selection.slice();
			
			if (nodeType == "*")
				selectChildren();
			else
			{
				_selection.length = 0;
				for (var i : int = numNodes - 1; i >= 0; --i)
				{
					var node : ISceneNode = selection[i];
					
					if (node is Group)
					{
						var group : Group	= node as Group;
						var numChildren : int = group.numChildren;
						
						for (var j : int = 0; j < numChildren; ++j)
						{
							var child 		: ISceneNode 	= group.getChildAt(j);
							var childType 	: String 		= getQualifiedClassName(child).split('::')[1];
							
							if (childType.toLowerCase() == nodeType)
								_selection.push(child);
						}
					}
				}
			}
			
			// apply predicates

					var numChildren : int 	= group.numChildren;
					
					for (var i : int = 0; i < numChildren; ++i)
					{
						var child 		: ISceneNode 	= group.getChildAt(i);
						var childType 	: String 		= getQualifiedClassName(child).split('::')[1];
						
						if (childType.toLowerCase() == typeName)
							_selection.push(child);
					}
				}
//				else
//					_selection.push(node);
			}
		}
		
