Hah.  As complicated as RevWalk is... its about as simple as you can get.  You are about to reinvent its API I think.

How about:

  public LogCommand add(ObjectId start) {
    return add(true, start);
  }

  /** Same as {@code --not start}, or {@code ^start}, or {@code add(false, start)}. */
  public LogCommand not(ObjectId start) {
    return add(false, start);
  }

  /* Adds the range {@code p..q}. */
  public LogCommand add(ObjectId p, ObjectId q) {
    return not(p).add(q);
  }

  public LogCommand add(boolean include, ObjectId start);

So we can translate an expression like:

  git log A ^B C

into Java as:

  log().add(A).add(false, B).add(C)