Design 1 example
class Assign {
   genCode() {}
   typeCheck() {}
   optimize() {}
}
class Call {
   genCode() {}
   typeCheck() {}
   optimize() {}
}