@Override
  public ValueBounds updateTypeBounds(Map<Expression, ValueBounds> typeMap) {
    ValueBounds fromType = childAt(0).updateTypeBounds(typeMap);
    ValueBounds toType = childAt(1).updateTypeBounds(typeMap);

    valueBounds = ValueBounds.vector(fromType.getTypeSet() | toType.getTypeSet());

    return valueBounds;
  }