code: public synchronized String hash(final URI... properties) {
          final List<URI> propertiesToHash;
          if (properties == null || properties.length == 0) {
              propertiesToHash = doGetProperties();
          } else {
              propertiesToHash = Arrays.asList(properties);
          }
          final Hasher hasher = Hashing.md5().newHasher();
          for (final URI property : propertiesToHash) {
              final Object object = doGet(property, Object.class);
              @SuppressWarnings("unchecked")
              final Iterable<Object> nodes = object instanceof List<?> ? (List<Object>) object
                      : ImmutableList.of(object);
              for (final Object node : ((Ordering<Object>) Data.getTotalComparator())
                      .sortedCopy(nodes)) {
                  // TODO: this is not efficient! add Node.toBytes
                  hasher.putString(Data.toString(node, null, true), Charsets.UTF_16LE);
              }
              hasher.putByte((byte) 0);
          }
          final StringBuilder builder = new StringBuilder(16);
          final byte[] bytes = hasher.hash().asBytes();
          int max = 52;
          for (int i = 0; i < bytes.length; ++i) {
              final int n = (bytes[i] & 0x7F) % max;
              if (n < 26) {
                  builder.append((char) (65 + n));
              } else if (n < 52) {
                  builder.append((char) (71 + n));
              } else {
                  builder.append((char) (n - 4));
              }
              max = 62;
          }
          return builder.toString();
      }
docs: Computes a string-valued hash code of the properties specified, or of all the available
  properties, if no URI is specified. Order of selected properties and order of values of
  each property do not matter. A cryptographic hash function is used. Collision probability
  is negligible. This method can be used to check whether two records have the same (subsets
  of) properties, by computing and comparing the respective hashes.
  
  @param properties
  the properties to hash.
  @return the computed hash code