Classes de valor introduzem métodos públicos indesejados

Olhando para alguns scala-docs das minhas bibliotecas, pareceu-me que há algum ruído indesejado das classes de valor. Por exemplo:

implicit class RichInt(val i: Int) extends AnyVal {
  def squared = i * i
}

Isto introduz um símbolo indesejadoi:

4.i   // arghh....

Esse material aparece nos documentos do scala e no preenchimento automático do IDE, o que não é realmente bom.

Então ... alguma ideia de como mitigar esse problema? Quer dizer que você pode usarRichInt(val self: Int) mas isso não melhora nada (4.selfwth?

EDITAR:

No exemplo a seguir, o compilador apaga ou não o objeto intermediário?

import language.implicitConversions

object Definition {
  trait IntOps extends Any { def squared: Int }
  implicit private class IntOpsImpl(val i: Int) extends AnyVal with IntOps {
    def squared = i * i
  }
  implicit def IntOps(i: Int): IntOps = new IntOpsImpl(i)  // optimised or not?
}

object Application {
  import Definition._
  // 4.i  -- forbidden
  4.squared
}

questionAnswers(5)

yourAnswerToTheQuestion