docs: private WithList XreadWithClause() {
          boolean recursive = false;
          if (withStatementDepth > 0) {
          	throw Error.error("With statements may not be nested.");
          }
          int oldStatementDepth = withStatementDepth;
          try {
          	session.clearLocalTables();
  	        withStatementDepth += 1;
  	        readThis(Tokens.WITH);
  	        if (token.tokenType == Tokens.RECURSIVE) {
  	            recursive = true;
  	            read();
  	        }
  	        WithList withList = new WithList(recursive);
  	        XreadWithList(withList);
  	        return withList;
          } finally {
          	withStatementDepth = oldStatementDepth;
          }
      }