private void DoPathExpression( string token, QueryTranslator q )
		{
			Preprocess( token, q );

			StringTokenizer tokens = new StringTokenizer( token, ".", true );
			pathExpressionParser.Start( q );
			foreach( string tok in tokens )
			{
				pathExpressionParser.Token( tok, q );
			}
			pathExpressionParser.End( q );

			if( pathExpressionParser.IsCollectionValued )
			{
				OpenExpression( q, string.Empty );
				AppendToken( q, pathExpressionParser.GetCollectionSubquery() );
				CloseExpression( q, string.Empty );
				// this is ugly here, but needed because its a subquery
				q.AddQuerySpace( q.GetCollectionPersister( pathExpressionParser.CollectionRole ).CollectionSpace );
			}
			else
			{
				if( pathExpressionParser.IsExpectingCollectionIndex )
				{
					expectingIndex++;
				}
				else
				{
					AddJoin( pathExpressionParser.WhereJoin, q );
					AppendToken( q, pathExpressionParser.WhereColumn );
				}
			}
		}