|  | // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | // This code is not run directly. It needs to be compiled to dex code. | 
|  | // 'stringbuilding.dex' is what is run. | 
|  |  | 
|  | package stringbuilding; | 
|  |  | 
|  | class StringBuilding { | 
|  |  | 
|  | static class X { | 
|  |  | 
|  | public String toString() { | 
|  | return "an X"; | 
|  | } | 
|  | } | 
|  |  | 
|  | public static void main(String[] args) { | 
|  | StringBuilder builder = new StringBuilder(); | 
|  | buildWithStatements(builder); | 
|  | buildWithExpressions(builder); | 
|  | System.out.print(builder); | 
|  | System.out.println(buildWithConcat()); | 
|  | System.out.print(buildWithAllAppendSignatures()); | 
|  | } | 
|  |  | 
|  | private static void buildWithStatements(StringBuilder builder) { | 
|  | builder.append("a"); | 
|  | builder.append(2); | 
|  | builder.append("c"); | 
|  | builder.append("-"); | 
|  | } | 
|  |  | 
|  | private static void buildWithExpressions(StringBuilder builder) { | 
|  | builder.append("x").append('y').append("z").append("-"); | 
|  | } | 
|  |  | 
|  | private static String buildWithConcat() { | 
|  | return "a" + "b" + "c" + someValue() + "x" + "y" + "z"; | 
|  | } | 
|  |  | 
|  | private static String buildWithAllAppendSignatures() { | 
|  | CharSequence seq = "1234"; | 
|  | StringBuilder builder = new StringBuilder(); | 
|  | builder | 
|  | .append(true) | 
|  | .append('A') | 
|  | .append(new char[]{'B', 'C'}) | 
|  | .append(new char[]{'C', 'D', 'E', 'F'}, 1, 2) | 
|  | .append(seq) | 
|  | .append(seq, 1, 3) | 
|  | .append(2.2) | 
|  | .append(1.1f) | 
|  | .append(0) | 
|  | .append(1L) | 
|  | .append(new X()) | 
|  | .append("string") | 
|  | .append(new StringBuilder("builder")); | 
|  | return builder.toString(); | 
|  | } | 
|  |  | 
|  | private static int someValue() { | 
|  | return 7; | 
|  | } | 
|  | } |