code: public static long getTimestamp(final MessageOrBuilder messageOrBuilder, final TimeUnit timeUnit) throws NotAvailableException {
          final FieldDescriptor timeStampFieldDescriptor = ProtoBufFieldProcessor.getFieldDescriptor(messageOrBuilder, TIMESTAMP_NAME.toLowerCase());
          if (timeStampFieldDescriptor == null || !messageOrBuilder.hasField(timeStampFieldDescriptor)) {
              throw new NotAvailableException(TIMESTAMP_NAME);
          }
          return TimeUnit.MILLISECONDS.convert(((Timestamp) messageOrBuilder.getField(timeStampFieldDescriptor)).getTime(), timeUnit);
      }
docs: Method resolves the timestamp of the given {@code messageOrBuilder} and returns the time it the given {@code timeUnit}.
  
  @param messageOrBuilder a message containing the timestamp.
  @param timeUnit         the time unit of the return value.
  
  @return the time of the timestamp.
  
  @throws NotAvailableException in thrown if the {@code messageOrBuilder} does not support or contain a timestamp.