public static Option<Boolean> shallowEqualsO(Object o1, Object o2) {
    if (o1 == null && o2 == null) {
      return Option.some(true);
    } else if (o1 == o2) {
      return Option.some(true);
    } else if (o1 != null && o2 != null) {
      java.lang.Class<?> c = o1.getClass();
      return c.isInstance(o2) ? Option.none() : Option.some(false);
    } else {
      return Option.some(false);
    }
  }