How to arrange neighbors nodes on group expand without using auto arrange?

How to arrange neighbors nodes on group expand without using auto arrange?
After collapse go to previous state.
my code is
layout: $(go.TreeLayout, { nodeSpacing: 3, isOngoing : false, arrangement: go.TreeLayout.ArrangementFixedRoots}),

isOngoing set to false.

The locations of all Nodes must be determined either via a Binding or because some code sets Node.location. That code is normally in some Layout class, but you could write the code yourself outside of an override of Layout.doLayout.

Certainly if you have set Layout.isOngoing to false, the layout will not be performed automatically as you add or remove nodes or links or expand or collapse or change size or hide or show nodes.

So it will be up to your own code to change the locations of nodes when a group is expanded or collapsed. One way to do so is to provide a function as the value of Group | GoJS API. That function would find neighboring nodes and move them the way that you want.