abstract A
c -> C *
A1 : A
[ # c = 2 ]
abstract B : A
abstract C
C1 : C
C2 : C