| // Copyright (c) 2018, 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 internal_annotation | 
 |  | 
 | @Annotation(8, "Base::Annotation::field2", [], []) | 
 | internal abstract class Base { | 
 |   protected abstract fun foo(): Any? | 
 |  | 
 |   public override fun toString(): String = | 
 |       "${foo() ?: this::class.java.name}" | 
 | } | 
 |  | 
 | // If we don't adjust annotation values, lack of f(3|4) will trigger errors on legacy VMs. | 
 | @Annotation(2, "Impl::Annotation::field2", [3], ["field4"]) | 
 | internal class Impl(val flag: Boolean) : Base() { | 
 |   override fun foo(): Any? { | 
 |     return when (flag) { | 
 |       true -> null | 
 |       false -> this | 
 |     } | 
 |   } | 
 |  | 
 |   public override fun toString(): String = | 
 |       if (flag) | 
 |         super.toString() | 
 |       else | 
 |         "Impl::toString" | 
 | } |