@Override
  public boolean equals(Object obj) {
    if (obj == this) {
      return true;
    } else if (obj == null) {
      return false;
    } else if ((obj instanceof ContextTransformer) && (hashCode() == obj.hashCode())) {
      ContextTransformer t = (ContextTransformer) obj;
      return (key == null) ? (t.key == null) : key.equals(t.key);
    } else {
      return false;
    }
  }
Traverses the input object (expected to be a {@link Map}) to find the data associated with
the specified key.
<p>
Note: This method is recursive in the even the key represents a path

@param key the key to search for
@param o   the object containing data to process
@return the found data or null
ambari-server/src/main/java/org/apache/ambari/server/collections/functors/ContextTransformer.java