title: How is a StringBuffer passing data through voids with no fields in the Class?
body: <p>Given: Class has no fields, every variable is local. littleString was created by refactoring bigString in Eclipse:</p>
  
  <pre><code>public String bigString()
      {
          StringBuffer bob = new StringBuffer();
          this.littleString(bob);
          return bob.toString();
      }
  
  private void littleString(final StringBuffer bob)
      {
          bob.append("Hello, I'm Bob");
      }
  </code></pre>
  
  <p>The method littleString should not be passing the StringBuffer back, but yet is is. What kind of Black Magic goes on here? This is breaking all rules of encapsulation that I know. I'm in shock, words fail me.</p>