code: public QueryContext with( Map<String, Object> variables ) {
          return new QueryContext(context, repositoryCache, workspaceNames, overriddenNodeCachesByWorkspaceName, schemata,
                                  indexDefns, nodeTypes, bufferManager, hints, problems, variables);
      }
docs: Obtain a copy of this context, except that the copy uses the supplied variables.
  
  @param variables the variables that should be used in the new context; may be null if there are no such variables
  @return the new context; never null