code: public void bind(Object parameter)
              throws org.odmg.QueryParameterCountInvalidException, org.odmg.QueryParameterTypeInvalidException
      {
          try
          {
              SelectionCriteria crit = (SelectionCriteria) getBindIterator().next();
              crit.bind(parameter);
  
              // BRJ: bind is called twice for between
              if (crit instanceof BetweenCriteria && !crit.isBound())
              {
                  getBindIterator().previous();
              }
          }
          catch (Exception e)
          {
              throw new org.odmg.QueryParameterCountInvalidException(e.getMessage());
          }
      }
docs: Bind a parameter to the query.
  A parameter is denoted in the query string passed to <code>create</code> by <i>$i</i>,
  where <i>i</i> is the rank of the parameter, beginning with 1.
  The parameters are set consecutively by calling this method <code>bind</code>.
  The <i>ith</i> variable is set by the <i>ith</i> call to the <code>bind</code> method.
  If any of the <i>$i</i> are not set by a call to <code>bind</code> at the point
  <code>execute</code> is called, <code>QueryParameterCountInvalidException</code> is thrown.
  The parameters must be objects, and the result is an <code>Object</code>.
  Objects must be used instead of primitive types (<code>Integer</code> instead
  of <code>int</code>) for passing the parameters.
  <p>
  If the parameter is of the wrong type,
  <code>QueryParameterTypeInvalidException</code> is thrown.
  After executing a query, the parameter list is reset.
  @param parameter	A value to be substituted for a query parameter.
  @exception org.odmg.QueryParameterCountInvalidException The number of calls to
  <code>bind</code> has exceeded the number of parameters in the query.
  @exception org.odmg.QueryParameterTypeInvalidException The type of the parameter does
  not correspond with the type of the parameter in the query.