code: public Container lazyIOR(Container x) {
      if (this instanceof ArrayContainer) {
        if (x instanceof ArrayContainer) {
          return ((ArrayContainer)this).lazyor((ArrayContainer) x);
        } else if (x instanceof BitmapContainer) {
          return ior((BitmapContainer) x);
        }
        return ((RunContainer) x).lazyor((ArrayContainer) this);
      } else if (this instanceof RunContainer) {
        if (x instanceof ArrayContainer) {
          return ((RunContainer) this).ilazyor((ArrayContainer) x);
        } else if (x instanceof BitmapContainer) {
          return ior((BitmapContainer) x);
        }
        return ior((RunContainer) x);
      } else {
        if (x instanceof ArrayContainer) {
          return ((BitmapContainer) this).ilazyor((ArrayContainer) x);
        } else if (x instanceof BitmapContainer) {
          return ((BitmapContainer) this).ilazyor((BitmapContainer) x);
        }
        return ((BitmapContainer) this).ilazyor((RunContainer) x);
      }
    }
docs: Computes the in-place bitwise OR of this container with another (union). The current container
  is generally modified, whereas the provided container (x) is unaffected. May generate a new
  container. The resulting container may not track its cardinality correctly. The resulting
  container may not track its cardinality correctly. This can be fixed as follows:
  if(c.getCardinality()&lt;0) ((BitmapContainer)c).computeCardinality();
  
  @param x other container
  @return aggregated container