code: @Override  // override for Javadoc and performance
      public int get(TemporalField field) {
          if (field instanceof ChronoField) {
              switch ((ChronoField) field) {
                  case NANO_OF_SECOND: return nanos;
                  case MICRO_OF_SECOND: return nanos / 1000;
                  case MILLI_OF_SECOND: return nanos / NANOS_PER_MILLI;
              }
              throw new UnsupportedTemporalTypeException("Unsupported field: " + field);
          }
          return range(field).checkValidIntValue(field.getFrom(this), field);
      }
docs: Gets the value of the specified field from this instant as an {@code int}.
  <p>
  This queries this instant for the value for the specified field.
  The returned value will always be within the valid range of values for the 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 date-time, except {@code INSTANT_SECONDS} which is too
  large to fit in an {@code int} and throws a {@code DateTimeException}.
  All other {@code ChronoField} instances will throw a {@code DateTimeException}.
  <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 ArithmeticException if numeric overflow occurs