code: @Transformer
      public static String formatSize(Object data) {
          if (null == data) throw new NullPointerException();
          Long bytes;
          if (data instanceof Number) {
              if (data instanceof Long) {
                  bytes = (Long) data;
              } else {
                  bytes = ((Number)data).longValue();
              }
          } else {
              bytes = Long.valueOf(data.toString());
          }
          if (bytes < 1024L) {
              return bytes + " B";
          }
          if (bytes < 1048576L) {
              return bytes / 1024L + "KB";
          }
          if (bytes < 1073741824L) {
              return bytes / 1048576L + "MB";
          }
          return bytes / 1073741824L + "GB";
      }
docs: Format size (e.g. disk space in bytes) into human readable style
  <ul>
  <li>When size is smaller than <code>1024L</code>, return size + <code>B</code></li>
  <li>When size is smaller than <code>1024L ^ 2</code>, return size/1024L + <code>KB</code></li>
  <li>When size is smaller than <code>1024L ^ 3</code>, return size/1048576L + <code>MB</code></li>
  <li>When size is smaller than <code>1024L ^ 4</code>, return size/1073741824L + <code>GB</code></li>
  </ul>
  
  <p>The method accept any data type. When <code>null</code> is found then
  <code>NullPointerException</code> will be thrown out; if an <code>Number</code>
  is passed in, it will be type cast to <code>Long</code>; otherwise
  a <code>Long.valueOf(data.toString())</code> is used to find out
  the number</p>
  
  @param data
  @return formatted string result