diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index e84fd1d..3fa9b16 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -2472,9 +2472,9 @@
     // Main method body   
     indent(f_service_) << "public " << function_signature_async(*f_iter, false) << " throws org.apache.thrift.TException {" << endl;
     indent(f_service_) << "  checkReady();" << endl;
-    indent(f_service_) << "  " << funclassname << " method_call = new " + funclassname + "(" << async_argument_list(*f_iter, arg_struct, ret_type) << ", this, protocolFactory, transport);" << endl;
-    indent(f_service_) << "  this.currentMethod = method_call;" << endl;
-    indent(f_service_) << "  manager.call(method_call);" << endl;
+    indent(f_service_) << "  " << funclassname << " method_call = new " + funclassname + "(" << async_argument_list(*f_iter, arg_struct, ret_type) << ", this, ___protocolFactory, ___transport);" << endl;
+    indent(f_service_) << "  this.___currentMethod = method_call;" << endl;
+    indent(f_service_) << "  ___manager.call(method_call);" << endl;
     indent(f_service_) << "}" << endl;
 
     f_service_ << endl;
diff --git a/lib/java/src/org/apache/thrift/async/TAsyncClient.java b/lib/java/src/org/apache/thrift/async/TAsyncClient.java
index 468bc6e..d3b009a 100644
--- a/lib/java/src/org/apache/thrift/async/TAsyncClient.java
+++ b/lib/java/src/org/apache/thrift/async/TAsyncClient.java
@@ -22,38 +22,38 @@
 import org.apache.thrift.transport.TNonblockingTransport;
 
 public abstract class TAsyncClient {
-  protected final TProtocolFactory protocolFactory;
-  protected final TNonblockingTransport transport;
-  protected final TAsyncClientManager manager;
-  protected TAsyncMethodCall currentMethod;
-  private Exception error;
-  private long timeout;
+  protected final TProtocolFactory ___protocolFactory;
+  protected final TNonblockingTransport ___transport;
+  protected final TAsyncClientManager ___manager;
+  protected TAsyncMethodCall ___currentMethod;
+  private Exception ___error;
+  private long ___timeout;
 
   public TAsyncClient(TProtocolFactory protocolFactory, TAsyncClientManager manager, TNonblockingTransport transport) {
     this(protocolFactory, manager, transport, 0);
   }
 
   public TAsyncClient(TProtocolFactory protocolFactory, TAsyncClientManager manager, TNonblockingTransport transport, long timeout) {
-    this.protocolFactory = protocolFactory;
-    this.manager = manager;
-    this.transport = transport;
-    this.timeout = timeout;
+    this.___protocolFactory = protocolFactory;
+    this.___manager = manager;
+    this.___transport = transport;
+    this.___timeout = timeout;
   }
 
   public TProtocolFactory getProtocolFactory() {
-    return protocolFactory;
+    return ___protocolFactory;
   }
 
   public long getTimeout() {
-    return timeout;
+    return ___timeout;
   }
 
   public boolean hasTimeout() {
-    return timeout > 0;
+    return ___timeout > 0;
   }
 
   public void setTimeout(long timeout) {
-    this.timeout = timeout;
+    this.___timeout = timeout;
   }
 
   /**
@@ -61,7 +61,7 @@
    * @return
    */
   public boolean hasError() {
-    return error != null;
+    return ___error != null;
   }
 
   /**
@@ -69,18 +69,18 @@
    * @return
    */
   public Exception getError() {
-    return error;
+    return ___error;
   }
 
   protected void checkReady() {
     // Ensure we are not currently executing a method
-    if (currentMethod != null) {
-      throw new IllegalStateException("Client is currently executing another method: " + currentMethod.getClass().getName());
+    if (___currentMethod != null) {
+      throw new IllegalStateException("Client is currently executing another method: " + ___currentMethod.getClass().getName());
     }
 
     // Ensure we're not in an error state
-    if (error != null) {
-      throw new IllegalStateException("Client has an error!", error);
+    if (___error != null) {
+      throw new IllegalStateException("Client has an error!", ___error);
     }
   }
 
@@ -88,15 +88,15 @@
    * Called by delegate method when finished
    */
   protected void onComplete() {
-    currentMethod = null;
+    ___currentMethod = null;
   }
 
   /**
    * Called by delegate method on error
    */
   protected void onError(Exception exception) {
-    transport.close();
-    currentMethod = null;
-    error = exception;
+    ___transport.close();
+    ___currentMethod = null;
+    ___error = exception;
   }
 }
