| // 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. | 
 | package shaking2; | 
 |  | 
 | public class Shaking { | 
 |   public static void callInterfaceMethod(Interface object) { | 
 |     object.interfaceMethod4(); | 
 |     object.interfaceMethod5(1, 2, 3, 4, 5, 6, 7, 8); | 
 |   } | 
 |  | 
 |   public static void callAsSuperClassAndInterface(SuperClass object) { | 
 |     object.interfaceMethod(); | 
 |     object.interfaceMethod2(); | 
 |     object.interfaceMethod3(); | 
 |     object.virtualMethod(); | 
 |     object.virtualMethod2(1, 2, 3, 4, 5, 6, 7, 8); | 
 |     object.accessFields(); | 
 |     callInterfaceMethod(object); | 
 |   } | 
 |  | 
 |   public static void accessStaticFields() { | 
 |     System.out.println("StaticFields::used: " + StaticFields.used); | 
 |     System.out.println("StaitcFields::read" + | 
 |         " " + StaticFields.readInt + | 
 |         " " + StaticFields.readBoolean+ | 
 |         " " + StaticFields.readByte + | 
 |         " " + StaticFields.readChar + | 
 |         " " + StaticFields.readObject + | 
 |         " " + StaticFields.readShort + | 
 |         " " + StaticFields.readDouble); | 
 |     StaticFields.writeInt = 1; | 
 |     StaticFields.writeBoolean = true; | 
 |     StaticFields.writeByte = 2; | 
 |     StaticFields.writeChar = 3; | 
 |     StaticFields.writeObject = new Object(); | 
 |     StaticFields.writeShort = 3; | 
 |     StaticFields.writeDouble = 3.3; | 
 |   } | 
 |  | 
 |   public static void main(String[] args) { | 
 |     accessStaticFields(); | 
 |     SuperClass.staticMethod(); | 
 |     SuperClass.staticMethod2(1, 2, 3, 4, 5, 6, 7, 8); | 
 |     SubClass1 instance1 = new SubClass1(1); | 
 |     callAsSuperClassAndInterface(instance1); | 
 |     instance1.virtualMethod3(); | 
 |     instance1.virtualMethod4(1, 2, 3, 4, 5, 6, 7, 8); | 
 |     callAsSuperClassAndInterface(new SubClass1(1, 2, 3, 4, 5, 6, 7, 8)); | 
 |     SubClass2 instance2 = new SubClass2(2); | 
 |     callAsSuperClassAndInterface(instance2); | 
 |     instance2.virtualMethod3(); | 
 |     instance2.virtualMethod4(1, 2, 3, 4, 5, 6, 7, 8); | 
 |   } | 
 | } |