code: private void _buildInBinding(
                      final InBinding binding,
                      final StringBuilder stmt,
                      final List<Object> params
                      )
      {
          // It's OK if null is contained.
  //        if (n_values == 0) {
  //            throw new SearchException( "invalid InBinding: empty value list" );
  //        }
  
  
          // T.p
          _buildProperty( binding.getProperty(), stmt );
          //throws SearchException
  
          // T.p IN LIST(
          stmt.append( _IN_LIST_ ).append( "(" );
  
          // T.p IN LIST(v_1, v_2, ..., v_n
          boolean  containsNull = false;
          int  n_valuesAdded = 0;
  
          for (Object  value : binding.getValues()) {
              if (value == null) {
                  containsNull = true;
              } else {
                  if (n_valuesAdded > 0) {
                      stmt.append( "," );
                  }
                  _buildParameter( value, stmt, params );
                  n_valuesAdded++;
              }
          }
  
          if (binding.isNullContained()  ||  containsNull) {
              if (n_valuesAdded > 0) {
                  stmt.append( "," );
              }
              // T.p IN LIST(v_1, v_2, ..., v_n, nil
              stmt.append( _NIL_ );
          }
  
          // T.p IN LIST(v_1, v_2, ..., v_n)
          stmt.append( ")" );
      }
docs: InBinding
  T.p IN LIST(v_1, v_2, ..., v_n)
  v_i = "nil", if v_i == null.