package test

public fun getSingleton(): test.Singleton!
public fun getString(): kotlin.String!

public final class Singleton {
    private constructor Singleton()

    // Static members
    private final var INSTANCE: test.Singleton!
    public open fun getInstance(): test.Singleton!
    public open fun getString(): kotlin.String!
}
