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.invalid) local.hashCode(); local = triedAndTrue; local.hashCode(); // should determine that it is Committed based on flow } }