private int get0(DateTimeField field) {

    switch ((ChronoField) field) {
      case DAY_OF_WEEK:
        return getDayOfWeek().getValue();
      case ALIGNED_DAY_OF_WEEK_IN_MONTH:
        return ((this.day - 1) % 7) + 1;
      case ALIGNED_DAY_OF_WEEK_IN_YEAR:
        return ((getDayOfYear() - 1) % 7) + 1;
      case DAY_OF_MONTH:
        return this.day;
      case DAY_OF_YEAR:
        return getDayOfYear();
      case EPOCH_DAY:
        throw new DateTimeException("Field too large for an int: " + field);
      case ALIGNED_WEEK_OF_MONTH:
        return ((this.day - 1) / 7) + 1;
      case ALIGNED_WEEK_OF_YEAR:
        return ((getDayOfYear() - 1) / 7) + 1;
      case MONTH_OF_YEAR:
        return this.month;
      case EPOCH_MONTH:
        throw new DateTimeException("Field too large for an int: " + field);
      case YEAR_OF_ERA:
        return (this.year >= 1 ? this.year : 1 - this.year);
      case YEAR:
        return this.year;
      case ERA:
        return (this.year >= 1 ? 1 : 0);
    }
    throw new DateTimeException("Unsupported field: " + field.getName());
  }