code: public static ParameterizedN1qlQuery parameterized(Statement statement, JsonObject namedParams) {
          return new ParameterizedN1qlQuery(statement, namedParams, null);
      }
docs: Create a new query with named parameters. Note that the {@link JsonObject}
  should not be mutated until {@link #n1ql()} is called since it backs the
  creation of the query string.
  
  Named parameters have the form of `$name`, where the `name` represents the unique name. The
  following two examples are equivalent and compare the {@link #simple(Statement)}
  vs the named {@link #parameterized(Statement, JsonObject)} approach:
  
  Simple:
  
  ```
  N1qlQuery.simple("SELECT * FROM `travel-sample` WHERE type = 'airline' and name like 'A%'")
  ```
  
  Named Params:
  
  ```
  N1qlQuery.parameterized(
  "SELECT * FROM `travel-sample` WHERE type = $type and name like $name",
  JsonObject.create()
  .put("type", "airline")
  .put("name", "A%")
  )
  ```
  
  Using parameterized statements combined with non-adhoc queries (which is configurable through
  the {@link N1qlParams}) can provide better performance even when the actual arguments change
  at execution time.
  
  @param statement the {@link Statement} to execute (containing named placeholders)
  @param namedParams the values for the named placeholders in statement