code: @Override
      public long getLong(TemporalField field) {
          if (field instanceof ChronoField) {
              switch ((ChronoField) field) {
                  case MONTH_OF_YEAR: return month;
                  case PROLEPTIC_MONTH: return getProlepticMonth();
                  case YEAR_OF_ERA: return (year < 1 ? 1 - year : year);
                  case YEAR: return year;
                  case ERA: return (year < 1 ? 0 : 1);
              }
              throw new UnsupportedTemporalTypeException("Unsupported field: " + field);
          }
          return field.getFrom(this);
      }
docs: Gets the value of the specified field from this year-month as a {@code long}.
  <p>
  This queries this year-month for the value of 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 a {@link ChronoField} then the query is implemented here.
  The {@link #isSupported(TemporalField) supported fields} will return valid
  values based on this year-month.
  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