public <T extends NodeDescriptor> T getChild(NodeDescriptor parent, DescriptorKey<T> key) {
    if (parent == null) {
      return (T)myRootChildren.get(key);
    }
    final Map<DescriptorKey<? extends NodeDescriptor>, NodeDescriptor> map = myChildrenMap.get(parent);
    return (T)(map != null ? map.get(key) : null);
  }
public <T extends NodeDescriptor> T getChild(NodeDescriptor parent, DescriptorKey<T> key)