@Override
  public int hashCode() {
    // We can't use myChildren.hashCode() because it iterates whole subtree. This should not produce many collisions because 'getData()'
    // usually refers to different objects
    return 31 * key.hashCode() + getData().hashCode();
  }
@Override
  public int hashCode()