discard """
  output: "b"
"""

type
  TA = object of TObject
    x, y: int

  TB = object of TA
    z: int

  TC = object of TB
    whatever: string

proc p(a: var TA) = echo "a"
proc p(b: var TB) = echo "b"

var c: TC

p(c)

