docs: public static CharSequence getRelativeTimeSpanString(Context context, ReadableInstant time, int flags) {
          boolean abbrevRelative = (flags & (FORMAT_ABBREV_RELATIVE | FORMAT_ABBREV_ALL)) != 0;
  
          // We set the millis to 0 so we aren't off by a fraction of a second when counting intervals
          DateTime now = DateTime.now(time.getZone()).withMillisOfSecond(0);
          DateTime timeDt = new DateTime(time).withMillisOfSecond(0);
          boolean past = !now.isBefore(timeDt);
          Interval interval = past ? new Interval(timeDt, now) : new Interval(now, timeDt);
  
          int resId;
          long count;
          if (Minutes.minutesIn(interval).isLessThan(Minutes.ONE)) {
              count = Seconds.secondsIn(interval).getSeconds();
              if (past) {
                  if (abbrevRelative) {
                      resId = R.plurals.joda_time_android_abbrev_num_seconds_ago;
                  }
                  else {
                      resId = R.plurals.joda_time_android_num_seconds_ago;
                  }
              }
              else {
                  if (abbrevRelative) {
                      resId = R.plurals.joda_time_android_abbrev_in_num_seconds;
                  }
                  else {
                      resId = R.plurals.joda_time_android_in_num_seconds;
                  }
              }
          }
          else if (Hours.hoursIn(interval).isLessThan(Hours.ONE)) {
              count = Minutes.minutesIn(interval).getMinutes();
              if (past) {
                  if (abbrevRelative) {
                      resId = R.plurals.joda_time_android_abbrev_num_minutes_ago;
                  }
                  else {
                      resId = R.plurals.joda_time_android_num_minutes_ago;
                  }
              }
              else {
                  if (abbrevRelative) {
                      resId = R.plurals.joda_time_android_abbrev_in_num_minutes;
                  }
                  else {
                      resId = R.plurals.joda_time_android_in_num_minutes;
                  }
              }
          }
          else if (Days.daysIn(interval).isLessThan(Days.ONE)) {
              count = Hours.hoursIn(interval).getHours();
              if (past) {
                  if (abbrevRelative) {
                      resId = R.plurals.joda_time_android_abbrev_num_hours_ago;
                  }
                  else {
                      resId = R.plurals.joda_time_android_num_hours_ago;
                  }
              }
              else {
                  if (abbrevRelative) {
                      resId = R.plurals.joda_time_android_abbrev_in_num_hours;
                  }
                  else {
                      resId = R.plurals.joda_time_android_in_num_hours;
                  }
              }
          }
          else if (Weeks.weeksIn(interval).isLessThan(Weeks.ONE)) {
              count = Days.daysIn(interval).getDays();
              if (past) {
                  if (abbrevRelative) {
                      resId = R.plurals.joda_time_android_abbrev_num_days_ago;
                  }
                  else {
                      resId = R.plurals.joda_time_android_num_days_ago;
                  }
              }
              else {
                  if (abbrevRelative) {
                      resId = R.plurals.joda_time_android_abbrev_in_num_days;
                  }
                  else {
                      resId = R.plurals.joda_time_android_in_num_days;
                  }
              }
          }
          else {
              return formatDateRange(context, time, time, flags);
          }
  
          String format = context.getResources().getQuantityString(resId, (int) count);
          return String.format(format, count);
      }