Compiled test.osl -> test.oso
Using a D directly in main:
d.c.bs[0].a.i = 0
d.c.bs[1].a.i = 1
d.c.bs[2].a.i = 2
d.c.bs[3].a.i = 3
d.c.bs[4].a.i = 4

passing a ref to a D:
d.c.bs[0].a.i = 0
d.c.bs[1].a.i = 1
d.c.bs[2].a.i = 2
d.c.bs[3].a.i = 3
d.c.bs[4].a.i = 4

passing a ref to a C:
c.bs[0].a.i = 0
c.bs[1].a.i = 3
c.bs[2].a.i = 6
c.bs[3].a.i = 9
c.bs[4].a.i = 12

passing a ref to a B[]:
bs[0].a.i = 0
bs[1].a.i = 4
bs[2].a.i = 8
bs[3].a.i = 12
bs[4].a.i = 16

passing a ref to a B:
b.a.i = 4

Testing assignment of the whole nested structure:
passing a ref to a D:
d.c.bs[0].a.i = 0
d.c.bs[1].a.i = 1
d.c.bs[2].a.i = 2
d.c.bs[3].a.i = 3
d.c.bs[4].a.i = 4

Testing writing to the innermost struct through function call:
  before: d.c.bs[0].a.i = 0
  after:  d.c.bs[0].a.i = 42

