code: public boolean returnTypeSubstitutable(Type r1, Type r2) {
          if (hasSameArgs(r1, r2))
              return resultSubtype(r1, r2, noWarnings);
          else
              return covariantReturnType(r1.getReturnType(),
                                         erasure(r2.getReturnType()),
                                         noWarnings);
      }
docs: Return-Type-Substitutable.
  @jls section 8.4.5