// Test case for Issue 337:
// https://github.com/typetools/checker-framework/issues/337

import javax.annotation.Nullable;

abstract class Issue337<R> {
  abstract R getThing(String key);

  @Nullable R m1(@Nullable String key) {
    return (key == null) ? null : getThing(key);
  }

  @Nullable R m1b(@Nullable String key) {
    return (key != null) ? getThing(key) : null;
  }

  @Nullable R m2(@Nullable String key) {
    return (key == null)
        ?
        // :: error: (argument)
        getThing(key)
        : null;
  }

  @Nullable R m2b(@Nullable String key) {
    return (key != null)
        ? null
        :
        // :: error: (argument)
        getThing(key);
  }
}
