@Override
    public OffsetDateTime plus(long amountToAdd, TemporalUnit unit) {
        if (unit instanceof ChronoUnit) {
            return with(dateTime.plus(amountToAdd, unit), offset);
        }
        return unit.addTo(this, amountToAdd);
    }
@ Override public OffsetDateTime plus ( long amountToAdd , TemporalUnit unit ) { if ( unit instanceof ChronoUnit ) { return with ( dateTime . plus ( amountToAdd , unit ) , offset ) ; } return unit . addTo ( this , amountToAdd ) ; }
Returns a copy of this date-time with the specified amount added.
<p>
This returns an {@code OffsetDateTime}, based on this one, with the amount
in terms of the unit added. If it is not possible to add the amount, because the
unit is not supported or for some other reason, an exception is thrown.
<p>
If the field is a {@link ChronoUnit} then the addition is implemented by
{@link LocalDateTime#plus(long, TemporalUnit)}.
The offset is not part of the calculation and will be unchanged in the result.
<p>
If the field is not a {@code ChronoUnit}, then the result of this method
is obtained by invoking {@code TemporalUnit.addTo(Temporal, long)}
passing {@code this} as the argument. In this case, the unit determines
whether and how to perform the addition.
<p>
This instance is immutable and unaffected by this method call.

@param amountToAdd  the amount of the unit to add to the result, may be negative
@param unit  the unit of the amount to add, not null
@return an {@code OffsetDateTime} based on this date-time with the specified amount added, not null
@throws DateTimeException if the addition cannot be made
@throws UnsupportedTemporalTypeException if the unit is not supported
@throws ArithmeticException if numeric overflow occurs