/// <summary>
/// Computes the bitwise AND of this container with another
/// (intersection). This container as well as the provided container are
/// left unaffected.
/// </summary>
/// <param name="x">Other container</param>
/// <returns>Aggregated container</returns>
public override Container And(ArrayContainer value2)
{
ArrayContainer value1 = this;
int desiredCapacity = Math.Min(value1.GetCardinality(), value2.GetCardinality());
ArrayContainer answer = new ArrayContainer(desiredCapacity);
answer.Cardinality = Utility.UnsignedIntersect2by2(value1.Content, value1.GetCardinality(), value2.Content, value2.GetCardinality(), answer.Content);
return(answer);
}