if (from < 0 || from > to) throw new IndexOutOfBoundsException(); if (from == to) return; int lo_offset = from >>> 6; int hi_offset = to >>> 6; ensure(hi_offset); if (lo_offset == hi_offset) { bits[hi_offset] |= (-1L << from) & ((1L << to) - 1); return; }  bits[lo_offset] |= -1L << from; bits[hi_offset] |= (1L << to) - 1; for (int i = lo_offset + 1; i < hi_offset; i++) bits[i] = -1;
int offset = pos >> 6; ensure(offset);   bits[offset] |= 1L << pos;
  public void set(int from, int to)  {    if (from < 0 || from > to)      throw new IndexOutOfBoundsException();    if (from == to)      return;    int lo_offset = from >>> 6;    int hi_offset = to >>> 6;    ensure(hi_offset);    if (lo_offset == hi_offset)      {        bits[hi_offset] |= (-1L << from) & ((1L << to) - 1);        return;      }    bits[lo_offset] |= -1L << from;    bits[hi_offset] |= (1L << to) - 1;    for (int i = lo_offset + 1; i < hi_offset; i++)      bits[i] = -1;  }