code: function clone(inst, alts) {
    const current = {
      ts: inst.ts,
      zone: inst.zone,
      c: inst.c,
      o: inst.o,
      loc: inst.loc,
      invalid: inst.invalid
    };
    return new DateTime(Object.assign({}, current, alts, { old: current }));
  }
docs: clone really means, "make a new object with these modifications". all "setters" really use this to create a new object while only changing some of the properties