function Addend(idx, len, value) {
  assert(len > 0, "Addend: 0 < len"); // empty sum is void - cannot create such
  assert(idx >= 0 && idx < len, "Addend: 0 <= idx < len");
  this.idx = idx;
  this.len = len;
  this.value = value;
}
### sum (n-ary either)

  See: [Wikipedia](https://en.wikipedia.org/wiki/Tagged_union)