FILE: RedundantSingleExpressionStringTemplateChecker.kt
    public final val x: R|kotlin/String| = String(Hello)
        public get(): R|kotlin/String|
    public final val y: R|kotlin/String| = <strcat>(R|/x|)
        public get(): R|kotlin/String|
    public final typealias S = R|kotlin/String|
    public final val x2: R|{S=} kotlin/String| = String(Hello)
        public get(): R|{S=} kotlin/String|
    public final val y2: R|kotlin/String| = <strcat>(R|/x2|)
        public get(): R|kotlin/String|
    public final val z: R|kotlin/String| = <strcat>(R|/y|.R|kotlin/Any.hashCode|())
        public get(): R|kotlin/String|
    public final fun toString(x: R|kotlin/String|): R|kotlin/String| {
        ^toString <strcat>(String(IC), R|<local>/x|)
    }
    public final data class ProductGroup : R|kotlin/Any| {
        public constructor(short_name: R|kotlin/String|, parent: R|ProductGroup?|): R|ProductGroup| {
            super<R|kotlin/Any|>()
        }

        public final val short_name: R|kotlin/String| = R|<local>/short_name|
            public get(): R|kotlin/String|

        public final val parent: R|ProductGroup?| = R|<local>/parent|
            public get(): R|ProductGroup?|

        public final val name: R|kotlin/String| = when () {
            ==(this@R|/ProductGroup|.R|/ProductGroup.parent|, Null(null)) ->  {
                this@R|/ProductGroup|.R|/ProductGroup.short_name|
            }
            else ->  {
                <strcat>(this@R|/ProductGroup|.R|/ProductGroup.parent|.R|/ProductGroup.name|, String( ), this@R|/ProductGroup|.R|/ProductGroup.short_name|)
            }
        }

            public get(): R|kotlin/String|

        public final operator fun component1(): R|kotlin/String|

        public final operator fun component2(): R|ProductGroup?|

        public final fun copy(short_name: R|kotlin/String| = this@R|/ProductGroup|.R|/ProductGroup.short_name|, parent: R|ProductGroup?| = this@R|/ProductGroup|.R|/ProductGroup.parent|): R|ProductGroup|

    }
    private final fun checkStartAndEnd(len: R|kotlin/Int|, start: R|kotlin/Int|, end: R|kotlin/Int|): R|kotlin/Unit| {
        when () {
            CMP(<, R|<local>/start|.R|kotlin/Int.compareTo|(Int(0))) || CMP(>, R|<local>/end|.R|kotlin/Int.compareTo|(R|<local>/len|)) ->  {
                throw R|java/lang/ArrayIndexOutOfBoundsException.ArrayIndexOutOfBoundsException|(<strcat>(String(start < 0 || end > len.), String( start=)).R|kotlin/String.plus|(R|<local>/start|).R|kotlin/String.plus|(String(, end=)).R|kotlin/String.plus|(R|<local>/end|).R|kotlin/String.plus|(String(, len=)).R|kotlin/String.plus|(R|<local>/len|))
            }
        }

        when () {
            CMP(>, R|<local>/start|.R|kotlin/Int.compareTo|(R|<local>/end|)) ->  {
                throw R|java/lang/IllegalArgumentException.IllegalArgumentException|(<strcat>(String(start > end: ), R|<local>/start|, String( > ), R|<local>/end|))
            }
        }

    }
