diff --git a/Driver/RewriteTest.cpp b/Driver/RewriteTest.cpp
index 6972f35..508f799 100644
--- a/Driver/RewriteTest.cpp
+++ b/Driver/RewriteTest.cpp
@@ -22,14 +22,16 @@
 namespace {
   class RewriteTest : public ASTConsumer {
     Rewriter Rewrite;
+    ASTContext *Context;
     SourceManager *SM;
     unsigned MainFileID;
     SourceLocation LastIncLoc;
   public:
-    void Initialize(ASTContext &Context, unsigned mainFileID) {
-      SM = &Context.SourceMgr;
+    void Initialize(ASTContext &context, unsigned mainFileID) {
+      Context = &context;
+      SM = &Context->SourceMgr;
       MainFileID = mainFileID;
-      Rewrite.setSourceMgr(Context.SourceMgr);
+      Rewrite.setSourceMgr(Context->SourceMgr);
     }
     
     virtual void HandleTopLevelDecl(Decl *D);
@@ -109,13 +111,12 @@
 }
 
 void RewriteTest::RewriteAtEncode(ObjCEncodeExpr *Exp) {
-  int Size = Rewrite.getRangeSize(Exp->getSourceRange());
-  if (Size == -1) {
-    printf("BLAH!");
-    return;
-  }
-  
-  Rewrite.ReplaceText(Exp->getAtLoc(), Size, "\"foo\"", 5);
+  // Create a new string expression.
+  QualType StrType = Context->getPointerType(Context->CharTy);
+  Expr *Replacement = new StringLiteral("foo", 3, false, StrType, 
+                                        SourceLocation(), SourceLocation());
+  Rewrite.ReplaceStmt(Exp, Replacement);
+  delete Replacement;
 }
 
 
diff --git a/Rewrite/Rewriter.cpp b/Rewrite/Rewriter.cpp
index 514b822..9e7d1b3 100644
--- a/Rewrite/Rewriter.cpp
+++ b/Rewrite/Rewriter.cpp
@@ -13,8 +13,10 @@
 //===----------------------------------------------------------------------===//
 
 #include "clang/Rewrite/Rewriter.h"
+#include "clang/AST/Stmt.h"
 #include "clang/Lex/Lexer.h"
 #include "clang/Basic/SourceManager.h"
+#include <sstream>
 using namespace clang;
 
 /// getMappedOffset - Given an offset into the original SourceBuffer that this
@@ -208,3 +210,23 @@
   getEditBuffer(StartFileID).ReplaceText(StartOffs, OrigLength,
                                          NewStr, NewLength);
 }
+
+/// ReplaceStmt - This replaces a Stmt/Expr with another, using the pretty
+/// printer to generate the replacement code.  This returns true if the input
+/// could not be rewritten, or false if successful.
+bool Rewriter::ReplaceStmt(Stmt *From, Stmt *To) {
+  // Measaure the old text.
+  int Size = getRangeSize(From->getSourceRange());
+  if (Size == -1)
+    return true;
+  
+  // Get the new text.
+  std::ostringstream S;
+  To->printPretty(S);
+  const std::string &Str = S.str();
+
+  ReplaceText(From->getLocStart(), Size, &Str[0], Str.size());
+  return false;
+}
+
+
diff --git a/include/clang/Rewrite/Rewriter.h b/include/clang/Rewrite/Rewriter.h
index bf4baf2..8e89883 100644
--- a/include/clang/Rewrite/Rewriter.h
+++ b/include/clang/Rewrite/Rewriter.h
@@ -22,6 +22,7 @@
 namespace clang {
   class SourceManager;
   class Rewriter;
+  class Stmt;
   
 /// SourceDelta - As code in the original input buffer is added and deleted,
 /// SourceDelta records are used to keep track of how the input SourceLocation
@@ -141,8 +142,10 @@
   void ReplaceText(SourceLocation Start, unsigned OrigLength,
                    const char *NewStr, unsigned NewLength);
   
-  // TODO: Replace Stmt/Expr with another.  Return bool to indicate whether the
-  // locations were rewritable.
+  /// ReplaceStmt - This replaces a Stmt/Expr with another, using the pretty
+  /// printer to generate the replacement code.  This returns true if the input
+  /// could not be rewritten, or false if successful.
+  bool ReplaceStmt(Stmt *From, Stmt *To);
   
   /// getRewriteBufferFor - Return the rewrite buffer for the specified FileID.
   /// If no modification has been made to it, return null.
