void (Node<V>[] tab, int index) { Node<V> b; int n; if (tab != null) { if ((n = tab.length) < MIN_TREEIFY_CAPACITY) { tryPresize(n << 1); } else if ((b = tabAt(tab, index)) != null && b.hash >= 0) { synchronized (b) { if (tabAt(tab, index) == b) { TreeNode<V> hd = null, tl = null; for (Node<V> e = b; e != null; e = e.next) { TreeNode<V> p = new TreeNode<V>(e.hash, e.key, e.val, null, null); if ((p.prev = tl) == null) { hd = p; } else { tl.next = p; } tl = p; } setTabAt(tab, index, new TreeBin<V>(hd)); } } } } }