import java.io.IOException;
import java.util.List;
import java.util.Map;

@SuppressWarnings("unused")
public class Annotated<@Typed(0) T, @TypedInvisible U>
        extends @Typed(0x10) Object
        implements @Typed(0x10) Comparable<@Typed String> {
    @Typed(0x13) String field;

    Map<@Typed String, @Typed List<@Typed(1) String>> paths;

    @Typed(0x13) int[] @Typed(0x13) [] arrays;

    <@Typed(0x11) V extends @Typed(0x12) Comparable<V> & @Typed(0x12) Cloneable> void bounds(V value) {}

    @Typed(0x14)
    String signatures(@Typed(0x16) String first, @Typed(0x16) int second)
            throws @Typed(0x17) IOException, @Typed(0x17) RuntimeException {
        return first;
    }

    void receiver(@Typed(0x15) Annotated<T, U> this) {}

    Object insideCode(Object input) throws IOException {
        @Typed(0x40) String local = "local";

        try (@Typed(0x41) AutoCloseable resource = () -> {}) {
            if (input instanceof @Typed(0x43) String) {
                local = (@Typed(0x47) String) input;
            }

            Object created = new @Typed(0x44) StringBuilder(local);

            return Annotated.<@Typed(0x4B) String>identity(local) + created;
        } catch (@Typed(0x42) RuntimeException error) {
            return error;
        } catch (Exception error) {
            throw new IOException(error);
        }
    }

    static <V> V identity(V value) {
        return value;
    }

    @Override
    public int compareTo(@Typed String other) {
        return 0;
    }
}
