 			if roots[rootName]?
 				root = roots[rootName]
 
-				if root.isSet or root instanceof Array
+				if $.isPlainObject(root) or root instanceof Array
 					collection = Expression.initCollection root, valueType
 				else
 					collection = Expression.initCollection [root], valueType

				scanner.next()
				token = scanner.token()

			parseTerm = () ->
				term = parseFactor()

				while token? and token.type == Scanner.OPERATOR and token.value in [ "*", "/" ]
					operator = token.value
					next()

					term = Expression.initOperator operator, [term, parseFactor()]
				term

			parseSubExpression = () ->
				subExpression = parseTerm()

				while token? and token.type == Scanner.OPERATOR and token.value in [ "+", "-" ]
					operator = token.value
					next()

					subExpression = Expression.initOperator operator, [subExpression, parseTerm()]
				subExpression

			parseExpression = () ->
				expression = parseSubExpression()

				while token? and token.type == Scanner.OPERATOR and token.value in [ "=", "<>", "<", ">", "<=", ">=" ]
					operator = token.value
					next()

					expression = Expression.initOperator operator, [expression, parseSubExpression()]
				expression

			parseExpressionList = () ->
				expressions = [parseExpression()]
				while token? and token.type == Scanner.DELIMITER and token.value == ","

						throw new Error "Missing property ID at position " + makePosition()
				path

			parseExpression = () ->
				result = null
				args = []

