@Override
  public MappeableArrayContainer and(final MappeableArrayContainer value2) {

    MappeableArrayContainer value1 = this;
    final int desiredCapacity = Math.min(value1.getCardinality(), value2.getCardinality());
    MappeableArrayContainer answer = new MappeableArrayContainer(desiredCapacity);
    if (BufferUtil.isBackedBySimpleArray(this.content)
        && BufferUtil.isBackedBySimpleArray(value2.content))
      answer.cardinality =
          org.roaringbitmap.Util.unsignedIntersect2by2(
              value1.content.array(),
              value1.getCardinality(),
              value2.content.array(),
              value2.getCardinality(),
              answer.content.array());
    else
      answer.cardinality =
          BufferUtil.unsignedIntersect2by2(
              value1.content,
              value1.getCardinality(),
              value2.content,
              value2.getCardinality(),
              answer.content.array());
    return answer;
  }
 @Override
 public MappeableArrayContainer iand(final MappeableArrayContainer value2) {
   final MappeableArrayContainer value1 = this;
   if (!BufferUtil.isBackedBySimpleArray(value1.content))
     throw new RuntimeException("Should not happen. Internal bug.");
   value1.cardinality =
       BufferUtil.unsignedIntersect2by2(
           value1.content,
           value1.getCardinality(),
           value2.content,
           value2.getCardinality(),
           value1.content.array());
   return this;
 }