statementContext = oldStatementContext;
    public void visitPrintStatement(SIRPrintStatement self,                                    JExpression exp)    {        CType type = exp.getType();                if (type.equals(CStdType.Boolean))        {            print("printf(\"%s\\n\", ");            exp.accept(this);            print(" ? \"true\" : \"false\");");        }        else if (type.equals(CStdType.Byte) ||                 type.equals(CStdType.Integer) ||                 type.equals(CStdType.Short))        {            print("printf(\"%d\\n\", ");            exp.accept(this);            print(");");        }        else if (type.equals(CStdType.Char))        {            print("printf(\"%c\\n\", ");            exp.accept(this);            print(");");        }        else if (type.equals(CStdType.Float) ||                 type.equals(CStdType.Double))        {            print("printf(\"%f\\n\", ");            exp.accept(this);            print(");");        }        else if (type.equals(CStdType.Long))        {            print("printf(\"%ld\\n\", ");            exp.accept(this);            print(");");        }        else        {            print("printf(\"(unprintable type: " + type + ")\\n\", ");            exp.accept(this);            print(");");        }    }