protected override ICode VisitIsInst(ExprIsInst e) {
     var ctx = e.Ctx;
     var mIsInst = ctx.Module.Import(((Func<object, Type, object>)InternalFunctions.IsInst).Method);
     var eType = new ExprJsTypeVarName(ctx, e.Type);
     var expr = new ExprCall(ctx, e.Type, mIsInst, null, e.Expr, eType);
     return expr;
 }
 protected override ICode VisitIsInst(ExprIsInst e) {
     this.code.AppendFormat("({0}?)", e.Type);
     this.Visit(e.Expr);
     return e;
 }
 protected override ICode VisitIsInst(ExprIsInst e) {
     throw new InvalidOperationException("This should never occur");
 }
 private Stmt IsInst(TypeReference toType) {
     var expr = new ExprIsInst(this.ctx, this.stack.Pop(), toType);
     return this.SsaLocalAssignment(expr);
 }