|  | // Copyright (c) 2017, 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. | 
|  | package identifiernamestring; | 
|  |  | 
|  | import java.lang.reflect.Field; | 
|  | import java.lang.reflect.Method; | 
|  |  | 
|  | public class Main { | 
|  | public static void main(String[] args) throws Exception { | 
|  | A ax = new A(); | 
|  | assert ax.boo.equals(A.TYPE_B); | 
|  | try { | 
|  | // Should be renamed | 
|  | ax.bar("identifiernamestring.B"); | 
|  | } catch (NullPointerException e) { | 
|  | System.err.println(e.getMessage()); | 
|  | } | 
|  |  | 
|  | Class a = Class.forName(A.TYPE_A); | 
|  | Class bByA = Class.forName(B.TYPO_A); | 
|  | // A's name is kept. | 
|  | assert a.equals(bByA); | 
|  |  | 
|  | Class b = Class.forName(ax.boo); | 
|  | Class bByB = Class.forName(B.TYPO_B); | 
|  | // As TYPO_B is not renamed, they will be different. | 
|  | assert !b.equals(bByB); | 
|  |  | 
|  | Field foo = R.findField(B.class, "foo"); | 
|  | System.out.println(foo.getName()); | 
|  | Method boo = R.findMethod(B.class, "boo", new Class[] { A.class }); | 
|  | System.out.println(boo.getName()); | 
|  | } | 
|  | } |