@Override
  public boolean equals(final Object obj) {
    if(!(obj instanceof ImmutableMap)) return false;
    final ImmutableMap<?, ?> other = (ImmutableMap<?, ?>) obj;
    return root.size == other.root.size && root.equals(other.root);
  }