@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;
  }