 
       splitCache.put(condensedQuery, root)
       filterCache.put(condensedQuery, root)
-      callback(null, getKnownTree(condensedQuery))
+      knownTree = convertEmptyTreeToEmptyObject(getKnownTree(condensedQuery))
+      callback(null, knownTree)
     return
 
 

    combineOp = condensedQuery[level + 1]?.combine
    filterCacheResult = filterCache.get(filter)

    return unless filterCacheResult?
    return if filterCacheResult is {}

    prop = {}
    for apply in applies
      prop[apply.name] = filterCacheResult[apply.name]

    if not splitOp? # end case
      return {

  getKnownTree = (condensedQuery) ->
    return getKnownTreeHelper(condensedQuery, condensedQuery[0].filter, 0)

  convertEmptyTreeToEmptyObject = (tree) ->
    propKeys = (key for key, value of tree.prop)
    return {} if (propKeys.length is 0 and not tree.splits?)
    return tree


  return (request, callback) ->
    throw new Error("request not supplied") unless request
    {context, query} = request
