code: public boolean covariantReturnType(Type t, Type s, Warner warner) {
          return
              isSameType(t, s) ||
              allowCovariantReturns &&
              !t.isPrimitive() &&
              !s.isPrimitive() &&
              isAssignable(t, s, warner);
      }
docs: Is t an appropriate return type in an overrider for a
  method that returns s?