@Override public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }

    KeyPath keyPath = (KeyPath) o;

    if (!keys.equals(keyPath.keys)) {
      return false;
    }
    return resolvedElement != null ? resolvedElement.equals(keyPath.resolvedElement) : keyPath.resolvedElement == null;
  }
We artificially create some container groups (like a root ContentGroup for the entire animation
and for the contents of a ShapeLayer).
lottie/src/main/java/com/airbnb/lottie/model/KeyPath.java