/**
  * Gets the value of the specified field from this day-of-week as a {@code long}.
  *
  * <p>This queries this day-of-week for the value for the specified field. If it is not possible
  * to return the value, because the field is not supported or for some other reason, an exception
  * is thrown.
  *
  * <p>If the field is {@link ChronoField#DAY_OF_WEEK DAY_OF_WEEK} then the value of the
  * day-of-week, from 1 to 7, will be returned. All other {@code ChronoField} instances will throw
  * an {@code UnsupportedTemporalTypeException}.
  *
  * <p>If the field is not a {@code ChronoField}, then the result of this method is obtained by
  * invoking {@code TemporalField.getFrom(TemporalAccessor)} passing {@code this} as the argument.
  * Whether the value can be obtained, and what the value represents, is determined by the field.
  *
  * @param field the field to get, not null
  * @return the value for the field
  * @throws DateTimeException if a value for the field cannot be obtained
  * @throws UnsupportedTemporalTypeException if the field is not supported
  * @throws ArithmeticException if numeric overflow occurs
  */
 @Override
 public long getLong(TemporalField field) {
   if (field == DAY_OF_WEEK) {
     return getValue();
   } else if (field instanceof ChronoField) {
     throw new UnsupportedTemporalTypeException("Unsupported field: " + field);
   }
   return field.getFrom(this);
 }
 // -----------------------------------------------------------------------
 @Override
 public long getLong(TemporalField field) {
   if (field instanceof ChronoField) {
     switch ((ChronoField) field) {
       case DAY_OF_WEEK:
         return getDayOfWeek();
       case ALIGNED_DAY_OF_WEEK_IN_MONTH:
         return getAlignedDayOfWeekInMonth();
       case ALIGNED_DAY_OF_WEEK_IN_YEAR:
         return getAlignedDayOfWeekInYear();
       case DAY_OF_MONTH:
         return getDayOfMonth();
       case DAY_OF_YEAR:
         return getDayOfYear();
       case EPOCH_DAY:
         return toEpochDay();
       case ALIGNED_WEEK_OF_MONTH:
         return getAlignedWeekOfMonth();
       case ALIGNED_WEEK_OF_YEAR:
         return getAlignedWeekOfYear();
       case MONTH_OF_YEAR:
         return getMonth();
       case PROLEPTIC_MONTH:
         return getProlepticMonth();
       case YEAR_OF_ERA:
         return getYearOfEra();
       case YEAR:
         return getProlepticYear();
       case ERA:
         return (getProlepticYear() >= 1 ? 1 : 0);
       default:
         break;
     }
     throw new UnsupportedTemporalTypeException("Unsupported field: " + field);
   }
   return field.getFrom(this);
 }