code: private boolean eraseNotNeeded(Type t) {
          // We don't want to erase primitive types and String type as that
          // operation is idempotent. Also, erasing these could result in loss
          // of information such as constant values attached to such types.
          return (t.isPrimitive()) || (syms.stringType.tsym == t.tsym);
      }
docs: where