code: def make_tree(trunk, branch1, branch2, alphas):
      # Make one copy that is the Tree version
      _trunk = [l["layer"](**l["config"]) for l in trunk]
      bnode = [BranchNode(name="bnode")]
      _branch1 = [l["layer"](**l["config"]) for l in branch1]
      _branch2 = [l["layer"](**l["config"]) for l in branch2]
      v1 = Tree([_trunk + bnode + _branch1, bnode + _branch2], alphas)
  
      # Now a second copy with no sharing as the reference version
      _trunkb = [l["layer"](**l["config"]) for l in trunk]
      _branch1b = [l["layer"](**l["config"]) for l in branch1]
      _branch2b = [l["layer"](**l["config"]) for l in branch2]
      return (v1, _trunkb, _branch1b, _branch2b)
  
file_path: neon/tests/test_branch_layer.py
imports: from builtins import zip
  import numpy
  import pytest
  from neon import NervanaObject
  from neon.layers import Sequential, Conv, Pooling, BranchNode, Affine, Tree
  from neon.initializers.initializer import Gaussian, Constant
  from neon.transforms import Rectlin
  from neon import logger
label_desc: Use image node_id 1 for calling a global function with example usage: make_tree(trunk, branch1, branch2, alphas) and returns: v1,  _trunkb,  _branch1b,  _branch2b