func newProcess(tf TeardownFunc) *process {
	return &process{
		teardown: tf,
		closed:   make(chan struct{}),
		closing:  make(chan struct{}),
		waitfors: make(map[*processLink]struct{}),
		children: make(map[*processLink]struct{}),
	}
}
func newProcess(tf TeardownFunc) *process {
	return &process{
		teardown: tf,
		closed:   make(chan struct{}),
		closing:  make(chan struct{}),
		waitfors: make(map[*processLink]struct{}),
		children: make(map[*processLink]struct{}),
	}
}
func newProcess ( tf TeardownFunc ) * process { return & process { teardown : tf , closed : make ( chan struct { } ) , closing : make ( chan struct { } ) , waitfors : make ( map [ * processLink ] struct { } ) , children : make ( map [ * processLink ] struct { } ) , } }
// newProcess constructs and returns a Process.
// It will call tf TeardownFunc exactly once:
//  **after** all children have fully Closed,
//  **after** entering <-Closing(), and
//  **before** <-Closed().
newProcess constructs and returns a Process . It will call tf TeardownFunc exactly once : ** after ** all children have fully Closed ** after ** entering < - Closing () and ** before ** < - Closed () .