import org.jetbrains.annotations.*;

class Test {
  @Nullable
  String foo1() {
    return null;
  }

  @NotNull
  String foo2() {
    return "";
  }

  String foo3(String s) {
    return s;
  }

  @NotNull
  String foo4(@NotNull String s) {
    return s.substring(0);
  }

  @NotNull
  Integer foo5(Integer i) {
    return i++;
  }

  @NotNull
  Integer foo6(Integer i) {
    if (i == 0) return 1;
    return i * foo6(i--);
  }

  @Nullable
  Integer foo7(boolean flag) {
    return flag ? null : 1;
  }

  @Nullable
  Integer foo8(boolean flag) {
    if (flag) {
      return null;
    }
    else {
      return 1;
    }
  }

  @Nullable
  String bar9() {
    return foo3("");
  }

  @Nullable
  String foo9() {
    return bar9();
  }


  @Nullable
  String bar10() {
    return foo3("");
  }

  @NotNull
  String bar101() {
    return foo3("");
  }

  @Nullable
  String foo10(boolean flag) {
    return flag ? bar10() : bar101();
  }

  @NotNull
  String foo11() {
    class Foo{
      @Nullable
      String mess() {
        return null;
      }
    }
    return "";
  }
}