There is no point in declaring this method `synchronized`, as it is single-statement read-only. The only modification that can affect root *during* invocation of this method is `clearTree()`. However, synchronized only ensure that `clearTree` will be entered only after exiting `getRoot()`. However, even in this case the returned value is no longer of any used.