public static void write(Map<String, Object> ret, Object o) {
    if (o == null) {
      ret.put("__null", "true");
    } else {
      SignatureMapper mapper = getSigMapper(o.getClass());
      mapper.write(ret, o);
    }
  }
Enables to calculate the signature of an object.

If the object has methods annotated with {@link Signature}, they will be used.
If the object has no methods marked with the annotation;
the object itself is used in the signature to prevent incorrect matches.
ql/src/java/org/apache/hadoop/hive/ql/optimizer/signature/SignatureUtils.java