general {
    funcon-term: 
      initialise-giving initialise-generating finalise-failing 
      sequential (
      print [object-subobject-sequence 
        object(fresh-atom,"A",map())],
      print [object-subobject-sequence 
        object(fresh-atom,"B",map(), 
        object(fresh-atom,"C",map()))],
      print [object-subobject-sequence 
        object(fresh-atom,"D",map(), 
        object(fresh-atom,"E",map(),
          object(fresh-atom,"F",map())),
        object(fresh-atom,"G",map()))]
      )
        ;
}

tests {
    result-term: null-value;
    standard-out: [
    [],
    [object(atom("@3"),"C",map-empty)],
    [object(atom("@5"),"E",map-empty,object(atom("@6"),"F",map-empty)),
      object(atom("@7"),"G",map-empty)]
    ];
}
