docs: public <T extends Appendable> T getApproximately(T a) {
  
          try {
              int parts = 0;
              boolean rounded = false;
              boolean prependBlank = false;
              long d = delta;
              long mod = d % YEAR;
  
              if (mod >= upperCeiling(YEAR)) {
                  a.append(ceil(d, YEAR));
                  a.append(' ');
                  a.append('y');
                  ++parts;
                  rounded = true;
                  prependBlank = true;
              } else if (d >= YEAR) {
                  a.append(floor(d, YEAR));
                  a.append(' ');
                  a.append('y');
                  ++parts;
                  rounded = mod <= lowerCeiling(YEAR);
                  prependBlank = true;
              }
  
              if (!rounded) {
                  d %= YEAR;
                  mod = d % DAY;
  
                  if (mod >= upperCeiling(DAY)) {
                      if (prependBlank) {
                          a.append(' ');
                      }
                      a.append(ceil(d, DAY));
                      a.append(' ');
                      a.append('d');
                      ++parts;
                      rounded = true;
                      prependBlank = true;
                  } else if (d >= DAY) {
                      if (prependBlank) {
                          a.append(' ');
                      }
                      a.append(floor(d, DAY));
                      a.append(' ');
                      a.append('d');
                      ++parts;
                      rounded = mod <= lowerCeiling(DAY);
                      prependBlank = true;
                  }
  
                  if (parts < 2) {
                      d %= DAY;
                      mod = d % HOUR;
  
                      if (mod >= upperCeiling(HOUR)) {
                          if (prependBlank) {
                              a.append(' ');
                          }
                          a.append(ceil(d, HOUR));
                          a.append(' ');
                          a.append('h');
                          ++parts;
                          rounded = true;
                          prependBlank = true;
                      } else if (d >= HOUR && !rounded) {
                          if (prependBlank) {
                              a.append(' ');
                          }
                          a.append(floor(d, HOUR));
                          a.append(' ');
                          a.append('h');
                          ++parts;
                          rounded = mod <= lowerCeiling(HOUR);
                          prependBlank = true;
                      }
  
                      if (parts < 2) {
                          d %= HOUR;
                          mod = d % MINUTE;
  
                          if (mod >= upperCeiling(MINUTE)) {
                              if (prependBlank) {
                                  a.append(' ');
                              }
                              a.append(ceil(d, MINUTE));
                              a.append(' ');
                              a.append('m');
                              ++parts;
                              rounded = true;
                              prependBlank = true;
                          } else if (d >= MINUTE && !rounded) {
                              if (prependBlank) {
                                  a.append(' ');
                              }
                              a.append(floor(d, MINUTE));
                              a.append(' ');
                              a.append('m');
                              ++parts;
                              rounded = mod <= lowerCeiling(MINUTE);
                              prependBlank = true;
                          }
  
                          if (parts < 2) {
                              d %= MINUTE;
                              mod = d % SECOND;
  
                              if (mod >= upperCeiling(SECOND)) {
                                  if (prependBlank) {
                                      a.append(' ');
                                  }
                                  a.append(ceil(d, SECOND));
                                  a.append(' ');
                                  a.append('s');
                                  ++parts;
                                  rounded = true;
                                  prependBlank = true;
                              } else if (d >= SECOND && !rounded) {
                                  if (prependBlank) {
                                      a.append(' ');
                                  }
                                  a.append(floor(d, SECOND));
                                  a.append(' ');
                                  a.append('s');
                                  ++parts;
                                  rounded = mod <= lowerCeiling(SECOND);
                                  prependBlank = true;
                              }
  
                              if (parts < 2) {
                                  d %= SECOND;
  
                                  if (d > 0 && !rounded) {
                                      if (prependBlank) {
                                          a.append(' ');
                                      }
                                      a.append(Integer.toString((int) d));
                                      a.append(' ');
                                      a.append('m');
                                      a.append('s');
                                  }
                              }
  
                          }
  
                      }
  
                  }
              }
          } catch (IOException ex) {
              // What were they thinking...
          }
  
          return a;
      }