code: @Nullable
      public String getDescription(int tagType)
      {
          Object object = _directory.getObject(tagType);
  
          if (object == null)
              return null;
  
          // special presentation for long arrays
          if (object.getClass().isArray()) {
              final int length = Array.getLength(object);
              if (length > 16) {
                  return String.format("[%d values]", length);
              }
          }
  
          if (object instanceof Date) {
              // Produce a date string having a format that includes the offset in form "+00:00"
              return new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy")
                  .format((Date) object)
                  .replaceAll("([0-9]{2} [^ ]+)$", ":$1");
          }
  
          // no special handling required, so use default conversion to a string
          return _directory.getString(tagType);
      }
docs: Returns a descriptive value of the specified tag for this image.
  Where possible, known values will be substituted here in place of the raw
  tokens actually kept in the metadata segment.  If no substitution is
  available, the value provided by <code>getString(tagType)</code> will be returned.
  
  @param tagType the tag to find a description for
  @return a description of the image's value for the specified tag, or
  <code>null</code> if the tag hasn't been defined.