docs: public static Double getDouble(Object x) {
          if (x == null) {
              return null;
          }
  
          if (x instanceof Double) {
              return (Double) x;
          }
  
          if (x instanceof String) {
              String s = x.toString();
              if (s == null || s.isEmpty()) {
                  return null;
              }
          }
  
          /*
           * This is the last and probably expensive fallback. This should be avoided by
           * only passing in Doubles, Integers, Longs or stuff that can be parsed from it's String
           * representation. You might have to build cached objects that did a safe conversion
           * once for example. There is no way around for the actual values we compare if the
           * user sent them in as non-numerical type.
           */
          return Doubles.tryParse(x.toString());
      }