?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 

?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

?=?: forall
      DT: incomplete type
    function
    with parameters
      pointer to pointer to instance of type DT (not function type) 
      pointer to instance of type DT (not function type) 
    returning 
      pointer to instance of type DT (not function type) 

*?: forall
      T: type
        with assertions
          ?=?: pointer to 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) 


    function
    with parameters
      pointer to instance of type T (not function type) 
    returning 
      lvalue instance of type T (not function type) 

__builtin_memcpy: function
      accepting unspecified arguments
    returning 
      pointer to char 

a: function
    with parameters
      char 
    returning 
      nothing 

b: function
    with parameters
      signed int 
    returning 
      nothing 

c: function
    with parameters
      pointer to signed int 
    returning 
      nothing 

d: function
    with parameters
      pointer to float 
    returning 
      nothing 

struct a_struct
    with members
      a: signed int 
      a: char 
      a: float 

?=?: automatically generated inline static function
    with parameters
      _dst: pointer to instance of struct a_struct 
      _src: instance of struct a_struct 
    returning 
      instance of struct a_struct 
    with body 
      CompoundStmt
                  Expression Statement:
            Application of
              Variable Expression: ?=?: function
                  with parameters
                    pointer to signed int 
                    signed int 
                  returning 
                    signed int 

            to arguments
                              Address of:
                  Member Expression, with field: 
                    a: signed int 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct a_struct 

                              Member Expression, with field: 
                  a: signed int 
                from aggregate: 
                  Variable Expression: _src: instance of struct a_struct 

            with environment:
              Types:
              Non-types:

                  Expression Statement:
            Application of
              Variable Expression: ?=?: function
                  with parameters
                    pointer to char 
                    char 
                  returning 
                    char 

            to arguments
                              Address of:
                  Member Expression, with field: 
                    a: char 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct a_struct 

                              Member Expression, with field: 
                  a: char 
                from aggregate: 
                  Variable Expression: _src: instance of struct a_struct 

            with environment:
              Types:
              Non-types:

                  Expression Statement:
            Application of
              Variable Expression: ?=?: function
                  with parameters
                    pointer to float 
                    float 
                  returning 
                    float 

            to arguments
                              Address of:
                  Member Expression, with field: 
                    a: float 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct a_struct 

                              Member Expression, with field: 
                  a: float 
                from aggregate: 
                  Variable Expression: _src: instance of struct a_struct 

            with environment:
              Types:
              Non-types:

                  Return Statement, returning: Cast of:
  Variable Expression: _src: instance of struct a_struct 

to:
  instance of struct a_struct 
with environment:
  Types:
  Non-types:



union b_struct
    with members
      a: pointer to signed int 
      a: pointer to char 
      a: pointer to float 

?=?: automatically generated inline static function
    with parameters
      _dst: pointer to instance of union b_struct 
      _src: instance of union b_struct 
    returning 
      instance of union b_struct 
    with body 
      CompoundStmt
                  Expression Statement:
            Application of
              Variable Expression: __builtin_memcpy: function
                    accepting unspecified arguments
                  returning 
                    pointer to char 

            to arguments
                              Variable Expression: _dst: pointer to instance of union b_struct 

                              Address of:
                  Variable Expression: _src: instance of union b_struct 

                              Sizeof Expression on: instance of union b_struct 

            with environment:
              Types:
              Non-types:

                  Return Statement, returning: Cast of:
  Variable Expression: _src: instance of union b_struct 

to:
  instance of union b_struct 
with environment:
  Types:
  Non-types:



f: function
      accepting unspecified arguments
    returning 
      nothing 
    with body 
      CompoundStmt
        Declaration of the_struct: instance of struct a_struct 
        Declaration of the_struct: instance of union b_struct 
                  Expression Statement:
            Application of
              Variable Expression: a: function
                  with parameters
                    char 
                  returning 
                    nothing 

            to arguments
                              Member Expression, with field: 
                  a: char 
                from aggregate: 
                  Variable Expression: the_struct: instance of struct a_struct 

            with environment:
              Types:
              Non-types:

                  Expression Statement:
            Application of
              Variable Expression: b: function
                  with parameters
                    signed int 
                  returning 
                    nothing 

            to arguments
                              Member Expression, with field: 
                  a: signed int 
                from aggregate: 
                  Variable Expression: the_struct: instance of struct a_struct 

            with environment:
              Types:
              Non-types:

                  Expression Statement:
            Application of
              Variable Expression: c: function
                  with parameters
                    pointer to signed int 
                  returning 
                    nothing 

            to arguments
                              Member Expression, with field: 
                  a: pointer to signed int 
                from aggregate: 
                  Variable Expression: the_struct: instance of union b_struct 

            with environment:
              Types:
              Non-types:

                  Expression Statement:
            Application of
              Variable Expression: d: function
                  with parameters
                    pointer to float 
                  returning 
                    nothing 

            to arguments
                              Member Expression, with field: 
                  a: pointer to float 
                from aggregate: 
                  Variable Expression: the_struct: instance of union b_struct 

            with environment:
              Types:
              Non-types:


struct c_struct
    with members
      signed int 
      char 
      float 

?=?: automatically generated inline static function
    with parameters
      _dst: pointer to instance of struct c_struct 
      _src: instance of struct c_struct 
    returning 
      instance of struct c_struct 
    with body 
      CompoundStmt
                  Expression Statement:
            Application of
              Variable Expression: ?=?: function
                  with parameters
                    pointer to signed int 
                    signed int 
                  returning 
                    signed int 

            to arguments
                              Address of:
                  Member Expression, with field: 
                    signed int 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct c_struct 

                              Member Expression, with field: 
                  signed int 
                from aggregate: 
                  Variable Expression: _src: instance of struct c_struct 

            with environment:
              Types:
              Non-types:

                  Expression Statement:
            Application of
              Variable Expression: ?=?: function
                  with parameters
                    pointer to char 
                    char 
                  returning 
                    char 

            to arguments
                              Address of:
                  Member Expression, with field: 
                    char 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct c_struct 

                              Member Expression, with field: 
                  char 
                from aggregate: 
                  Variable Expression: _src: instance of struct c_struct 

            with environment:
              Types:
              Non-types:

                  Expression Statement:
            Application of
              Variable Expression: ?=?: function
                  with parameters
                    pointer to float 
                    float 
                  returning 
                    float 

            to arguments
                              Address of:
                  Member Expression, with field: 
                    float 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct c_struct 

                              Member Expression, with field: 
                  float 
                from aggregate: 
                  Variable Expression: _src: instance of struct c_struct 

            with environment:
              Types:
              Non-types:

                  Return Statement, returning: Cast of:
  Variable Expression: _src: instance of struct c_struct 

to:
  instance of struct c_struct 
with environment:
  Types:
  Non-types:



union d_struct
    with members
      pointer to signed int 
      pointer to char 
      pointer to float 

?=?: automatically generated inline static function
    with parameters
      _dst: pointer to instance of union d_struct 
      _src: instance of union d_struct 
    returning 
      instance of union d_struct 
    with body 
      CompoundStmt
                  Expression Statement:
            Application of
              Variable Expression: __builtin_memcpy: function
                    accepting unspecified arguments
                  returning 
                    pointer to char 

            to arguments
                              Variable Expression: _dst: pointer to instance of union d_struct 

                              Address of:
                  Variable Expression: _src: instance of union d_struct 

                              Sizeof Expression on: instance of union d_struct 

            with environment:
              Types:
              Non-types:

                  Return Statement, returning: Cast of:
  Variable Expression: _src: instance of union d_struct 

to:
  instance of union d_struct 
with environment:
  Types:
  Non-types:



g: function
      accepting unspecified arguments
    returning 
      nothing 
    with body 
      CompoundStmt
        Declaration of x: short unsigned int 
        Declaration of x: instance of struct c_struct 
        Declaration of x: instance of union d_struct 
                  Expression Statement:
            Application of
              Variable Expression: a: function
                  with parameters
                    char 
                  returning 
                    nothing 

            to arguments
                              Cast of:
                  Variable Expression: x: short unsigned int 

                to:
                  char 

            with environment:
              Types:
              Non-types:

                  Expression Statement:
            Application of
              Variable Expression: b: function
                  with parameters
                    signed int 
                  returning 
                    nothing 

            to arguments
                              Cast of:
                  Variable Expression: x: short unsigned int 

                to:
                  signed int 

            with environment:
              Types:
              Non-types:

                  Expression Statement:
            Application of
              Variable Expression: c: function
                  with parameters
                    pointer to signed int 
                  returning 
                    nothing 

            to arguments
                              Member Expression, with field: 
                  pointer to signed int 
                from aggregate: 
                  Variable Expression: x: instance of union d_struct 

            with environment:
              Types:
              Non-types:

                  Expression Statement:
            Application of
              Variable Expression: d: function
                  with parameters
                    pointer to float 
                  returning 
                    nothing 

            to arguments
                              Member Expression, with field: 
                  pointer to float 
                from aggregate: 
                  Variable Expression: x: instance of union d_struct 

            with environment:
              Types:
              Non-types:


struct forward
q: pointer to instance of struct forward 
struct forward
    with members
      y: signed int 

?=?: automatically generated inline static function
    with parameters
      _dst: pointer to instance of struct forward 
      _src: instance of struct forward 
    returning 
      instance of struct forward 
    with body 
      CompoundStmt
                  Expression Statement:
            Application of
              Variable Expression: ?=?: function
                  with parameters
                    pointer to signed int 
                    signed int 
                  returning 
                    signed int 

            to arguments
                              Address of:
                  Member Expression, with field: 
                    y: signed int 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct forward 

                              Member Expression, with field: 
                  y: signed int 
                from aggregate: 
                  Variable Expression: _src: instance of struct forward 

            with environment:
              Types:
              Non-types:

                  Return Statement, returning: Cast of:
  Variable Expression: _src: instance of struct forward 

to:
  instance of struct forward 
with environment:
  Types:
  Non-types:



h: function
      accepting unspecified arguments
    returning 
      nothing 
    with body 
      CompoundStmt
                  Expression Statement:
            Member Expression, with field: 
              y: signed int 
            from aggregate: 
              Application of
                Variable Expression: *?: forall
                      T: type
                        with assertions
                          ?=?: pointer to 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) 


                    function
                    with parameters
                      pointer to instance of type T (not function type) 
                    returning 
                      lvalue instance of type T (not function type) 

              to arguments
                                  Variable Expression: q: pointer to instance of struct forward 

              with inferred parameters:
                ?=?: inline static function
                  with parameters
                    _dst: pointer to instance of struct forward 
                    _src: instance of struct forward 
                  returning 
                    instance of struct forward 

            with environment:
              Types:
              Non-types:


Error: unbound type variable in application Application of
  Variable Expression: *?: forall
        T: type
          with assertions
            ?=?: pointer to 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) 


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

to arguments
      Variable Expression: q: pointer to instance of struct forward 

with inferred parameters:
  ?=?: inline static function
    with parameters
      _dst: pointer to instance of struct forward 
      _src: instance of struct forward 
    returning 
      instance of struct forward 


