code: public static ParameterizedN1qlQuery parameterized(String statement, JsonArray positionalParams, N1qlParams params) {
          return new ParameterizedN1qlQuery(new RawStatement(statement), positionalParams, params);
      }
docs: Create a new query with positionalParameters. Note that the {@link JsonArray}
  should not be mutated until {@link #n1ql()} is called since it backs the
  creation of the query string.
  
  Positional parameters have the form of `$n`, where the `n` represents the position, starting
  with 1. The following two examples are equivalent and compare the {@link #simple(Statement)}
  vs the positional {@link #parameterized(Statement, JsonArray)} approach:
  
  Simple:
  
  ```
  N1qlQuery.simple("SELECT * FROM `travel-sample` WHERE type = 'airline' and name like 'A%'")
  ```
  
  Positional Params:
  
  ```
  N1qlQuery.parameterized(
  "SELECT * FROM `travel-sample` WHERE type = $1 and name like $2",
  JsonArray.from("airline", "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 raw statement to execute (containing positional placeholders)
  @param positionalParams the values for the positional placeholders in statement
  @param params the {@link N1qlParams query parameters}.