diff --git a/platform/lang-impl/src/com/intellij/slicer/SliceNode.java b/platform/lang-impl/src/com/intellij/slicer/SliceNode.java index b058d2cd0acd..3133534abc11 100644 --- a/platform/lang-impl/src/com/intellij/slicer/SliceNode.java +++ b/platform/lang-impl/src/com/intellij/slicer/SliceNode.java @@ -1,18 +1,4 @@ -/* - * Copyright 2000-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.slicer; import com.intellij.ide.projectView.PresentationData; @@ -41,7 +27,7 @@ import java.util.Collections; import java.util.List; public class SliceNode extends AbstractTreeNode implements DuplicateNodeRenderer.DuplicatableNode, MyColoredTreeCellRenderer { - protected List myCachedChildren; + protected volatile List myCachedChildren; boolean dupNodeCalculated; protected SliceNode duplicate; public final DuplicateMap targetEqualUsages; @@ -81,7 +67,11 @@ public class SliceNode extends AbstractTreeNode implements Duplicate } synchronized (nodes) { - myCachedChildren = nodes; + if (myCachedChildren != null) { + nodes = myCachedChildren; + } else { + myCachedChildren = nodes; + } } return nodes; }