import org.checkerframework.checker.initialization.qual.Initialized;
import org.checkerframework.checker.initialization.qual.UnknownInitialization;
import org.checkerframework.checker.nullness.qual.NonNull;

public class CommitmentFlow {

  @NonNull CommitmentFlow t;

  public CommitmentFlow(CommitmentFlow arg) {
    t = arg;
  }

  void foo(
      @UnknownInitialization CommitmentFlow mystery, @Initialized CommitmentFlow triedAndTrue) {
    CommitmentFlow local = null;

    local = mystery;
    // :: error: (method.invocation)
    local.hashCode();

    local = triedAndTrue;
    local.hashCode(); // should determine that it is Initialized based on flow
  }
}
