context addable
    with parameters
      T: type

    with members
      ?+?: function
          with parameters
            instance of type T (not function type) 
            instance of type T (not function type) 
          returning 
            instance of type T (not function type) 

      ?=?: function
          with parameters
            pointer to instance of type T (not function type) 
            instance of type T (not function type) 
          returning 
            instance of type T (not function type) 


struct __anonymous0
    with members
      data: instance of type T (not function type) 
      next: pointer to instance of type List1 (not function type) 
        with parameters
          instance of type T (not function type) 


?=?: automatically generated inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 
    with body 
      CompoundStmt
                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Member Expression, with field: 
                    data: instance of type T (not function type) 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct __anonymous0 
                Member Expression, with field: 
                  data: instance of type T (not function type) 
                from aggregate: 
                  Variable Expression: _src: instance of struct __anonymous0 

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Member Expression, with field: 
                    next: pointer to instance of type List1 (not function type) 
                    with parameters
                      instance of type T (not function type) 

                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct __anonymous0 
                Member Expression, with field: 
                  next: pointer to instance of type List1 (not function type) 
                  with parameters
                    instance of type T (not function type) 

                from aggregate: 
                  Variable Expression: _src: instance of struct __anonymous0 

                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 



List1: type for pointer to instance of struct __anonymous0 
  with parameters
    T: type
      with assertions
        instance of context addable 
          with parameters
            instance of type T (not function type) 



?=?: automatically generated function
    with parameters
      _dst: pointer to instance of type List1 (not function type) 
      _src: instance of type List1 (not function type) 
    returning 
      instance of type List1 (not function type) 
    with body 
      CompoundStmt
                  Return Statement, returning: Applying untyped: 
    Name: ?=?
...to: 
    Cast of:
      Variable Expression: _dst: pointer to instance of type List1 (not function type) 

    to:
      pointer to pointer to instance of struct __anonymous0 
    Cast of:
      Variable Expression: _src: instance of type List1 (not function type) 

    to:
      pointer to instance of struct __anonymous0 



li: instance of type List1 (not function type) 
  with parameters
    signed int 

f: function
    with parameters
      g: pointer to function
          with parameters
            signed int 
          returning 
            instance of type List1 (not function type) 
              with parameters
                signed int 


    returning 
      signed int 

h: function
    with parameters
      p: pointer to instance of type List1 (not function type) 
        with parameters
          signed int 

    returning 
      signed int 

struct S2
    with parameters
      T: type

    with members
      i: instance of type T (not function type) 

?=?: automatically generated inline static function
    with parameters
      _dst: pointer to instance of struct S2 
      _src: instance of struct S2 
    returning 
      instance of struct S2 
    with body 
      CompoundStmt
                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Member Expression, with field: 
                    i: instance of type T (not function type) 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct S2 
                Member Expression, with field: 
                  i: instance of type T (not function type) 
                from aggregate: 
                  Variable Expression: _src: instance of struct S2 

                  Return Statement, returning: Variable Expression: _src: instance of struct S2 



v1: instance of struct S3 
  with parameters
    signed int 

p: pointer to instance of struct S3 
  with parameters
    signed int 

struct S24
    with parameters
      T: type

    with members
      i: instance of type T (not function type) 

?=?: automatically generated inline static function
    with parameters
      _dst: pointer to instance of struct S24 
      _src: instance of struct S24 
    returning 
      instance of struct S24 
    with body 
      CompoundStmt
                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Member Expression, with field: 
                    i: instance of type T (not function type) 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct S24 
                Member Expression, with field: 
                  i: instance of type T (not function type) 
                from aggregate: 
                  Variable Expression: _src: instance of struct S24 

                  Return Statement, returning: Variable Expression: _src: instance of struct S24 



v2: instance of struct S24 
  with parameters
    signed int 

struct __anonymous1
    with parameters
      T: type

    with members
      i: instance of type T (not function type) 

?=?: automatically generated inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous1 
      _src: instance of struct __anonymous1 
    returning 
      instance of struct __anonymous1 
    with body 
      CompoundStmt
                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Member Expression, with field: 
                    i: instance of type T (not function type) 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct __anonymous1 
                Member Expression, with field: 
                  i: instance of type T (not function type) 
                from aggregate: 
                  Variable Expression: _src: instance of struct __anonymous1 

                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous1 



v2: instance of struct __anonymous1 
  with parameters
    signed int 

struct node
    with parameters
      T: type
        with assertions
          instance of context addable 
            with parameters
              instance of type T (not function type) 



    with members
      data: instance of type T (not function type) 
      next: pointer to instance of struct node 
        with parameters
          instance of type T (not function type) 


?=?: automatically generated inline static function
    with parameters
      _dst: pointer to instance of struct node 
      _src: instance of struct node 
    returning 
      instance of struct node 
    with body 
      CompoundStmt
                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Member Expression, with field: 
                    data: instance of type T (not function type) 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct node 
                Member Expression, with field: 
                  data: instance of type T (not function type) 
                from aggregate: 
                  Variable Expression: _src: instance of struct node 

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Member Expression, with field: 
                    next: pointer to instance of struct node 
                    with parameters
                      instance of type T (not function type) 

                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct node 
                Member Expression, with field: 
                  next: pointer to instance of struct node 
                  with parameters
                    instance of type T (not function type) 

                from aggregate: 
                  Variable Expression: _src: instance of struct node 

                  Return Statement, returning: Variable Expression: _src: instance of struct node 



List: type for pointer to instance of struct node 
  with parameters
    instance of type T (not function type) 

  with parameters
    T: type

?=?: automatically generated function
    with parameters
      _dst: pointer to instance of type List (not function type) 
      _src: instance of type List (not function type) 
    returning 
      instance of type List (not function type) 
    with body 
      CompoundStmt
                  Return Statement, returning: Applying untyped: 
    Name: ?=?
...to: 
    Cast of:
      Variable Expression: _dst: pointer to instance of type List (not function type) 

    to:
      pointer to pointer to instance of struct node 
        with parameters
          instance of type T (not function type) 

    Cast of:
      Variable Expression: _src: instance of type List (not function type) 

    to:
      pointer to instance of struct node 
        with parameters
          instance of type T (not function type) 




my_list: instance of type List (not function type) 
  with parameters
    signed int 

Complex: type
  with assertions
    instance of context addable 
      with parameters
        instance of type Complex (not function type) 


?=?: automatically generated function
    with parameters
      _dst: pointer to instance of type Complex (not function type) 
      _src: instance of type Complex (not function type) 
    returning 
      instance of type Complex (not function type) 

main: C function
      accepting unspecified arguments
    returning 
      signed int 
    with body 
      CompoundStmt
                  Expression Statement:
            Cast of:
              Name: my_list

            to:
              instance of struct node 
                with parameters
                  signed int 



