```"The smaller of the two arguments."
shared see(`function largest`)
Integer smallest(Integer x, Integer y)
=>  if (x < y) then x else y;

"The larger of the two arguments."
shared see(`function smallest`)
Integer largest(Integer x, Integer y)
=>  if (x > y) then x else y;

"The largest [[Integer]] in the given stream, or `null`
if the stream is empty."
shared Integer|Absent max<Absent>
(Iterable<Integer,Absent> values)
given Absent satisfies Null {
value first = values.first;
if (exists first) {
variable value max = first;
for (x in values) {
if (x>max) {
max = x;
}
}
return max;
}
return first;
}

"The smallest [[Integer]] in the given stream, or `null`
if the stream is empty."
shared Integer|Absent min<Absent>
(Iterable<Integer,Absent> values)
given Absent satisfies Null {
value first = values.first;
if (exists first) {
variable value min = first;
for (x in values) {
if (x<min) {
min = x;
}
}
return min;
}
return first;
}

"The sum of the values in the given stream, or
`0` if the stream is empty."
shared
Integer sum({Integer*} values) {
variable Integer sum=0;
for (x in values) {
sum+=x;
}
return sum;
}

"The product of the values in the given stream, or
`1` if the stream is empty."
shared
Integer product({Integer*} values) {
variable Integer product=1;
for (x in values) {
product*=x;
}
return product;
}
```