def is
[T
<: Exp
: Manifest
] = { implicitly
[Manifest
[T
]].
erasure.
isInstance(this) }
def as
[T
<: Exp
] = asInstanceOf
[T
] }
println(b.as[BinaryExp].left + b.as[BinaryExp].right)
}
println(b + " is not unary expression")
}
}
c2VhbGVkIGFic3RyYWN0IGNsYXNzIEV4cCB7CiAgZGVmIGlzW1QgPDogRXhwOiBNYW5pZmVzdF0gPSB7CiAgCWltcGxpY2l0bHlbTWFuaWZlc3RbVF1dLmVyYXN1cmUuaXNJbnN0YW5jZSh0aGlzKQogIH0KICBkZWYgYXNbVCA8OiBFeHBdID0gYXNJbnN0YW5jZU9mW1RdCn0KCnRyYWl0IFVuYXJ5RXhwIGV4dGVuZHMgRXhwIHsgZGVmIGFyZzogSW50IH0KdHJhaXQgQmluYXJ5RXhwIGV4dGVuZHMgRXhwIHsgZGVmIGxlZnQ6IEludDsgZGVmIHJpZ2h0OiBJbnQgfQpjYXNlIGNsYXNzIFBsdXMobGVmdDogSW50LCByaWdodDogSW50KSBleHRlbmRzIEJpbmFyeUV4cAoKb2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewoJdmFsIGIgPSBQbHVzKDEsIDIpCgoJaWYgKGIuaXNbQmluYXJ5RXhwXSkgewogICAgCXByaW50bG4oYi5hc1tCaW5hcnlFeHBdLmxlZnQgKyBiLmFzW0JpbmFyeUV4cF0ucmlnaHQpCiAgICB9CiAgICAKICAgIGlmICghYi5pc1tVbmFyeUV4cF0pIHsKICAgIAlwcmludGxuKGIgKyAiIGlzIG5vdCB1bmFyeSBleHByZXNzaW9uIikKICAgIH0KCQp9Cg==