title: Removing log calls with proguard leaves behind StringBuilders
body: <p>I have a class with static methods for logging, eg:</p>
  
  <p>I'm attempting to remove all these using ProGuard. I don't want to just disable them (That done using logic anyway), I want them to disappear when decompiled.</p>
  
  <p>It is successfully removing the calls to my logging methods, but leaves behind the strings that were concatenated. It completely removes the strings that were fixed.</p>
  
  <p>This is my ProGuard setting:</p>
  
  <pre><code>-assumenosideeffects class com.mypackage.Log { *; }
  </code></pre>
  
  <p>This is my source:</p>
  
  <pre><code>void doSomething(String name) {
      Log.verbose("Hello!");
      Log.verbose("My name is " + name);
      ...
  }
  </code></pre>
  
  <p>This is what it decompiles to:</p>
  
  <pre><code>void a(String a) {
      new StringBuilder("My name is ").append(a);
      ...
  }
  </code></pre>
  
  <p>This is what I want it to decompile to:</p>
  
  <pre><code>void a(String a) {
      ...
  }
  </code></pre>
  
  <p>For this example, assume that the name parameter is used later on in the method (ie, it shouldn't be optimized out completely).</p>
  
  <p>Should I also be using <code>assumenosideeffects</code> for StringBuilder? I do use StringBuilders elsewhere, that I do want to keep. Would that remove them there, too?</p>