Is there any specification of scala compilator that can explain that behaviour? 

scala version: 2\_10\_6

---

code example

```
trait Service {
  def process(s: String)
}

object ServiceImpl extends Service{
  override def process(s: String): Unit = {
    println(s)
  }
}

object Register {
  var serviceInst : Service = ServiceImpl
}

object Client1 {    
  def process1(l: List[String]): Unit ={
    l.foreach(x => Register.serviceInst.process(x))
  }      
}

object Client2 {    
  def process1(l: List[String]): Unit ={
    l.foreach(Register.serviceInst.process)
  }      
}

```

---

I assume that process1 and process2 should have the similar behaviour. However, after comilation / decom

```
public final class Client1$$anonfun$process$1$$anonfun$apply$1 extends AbstractFunction1<String, BoxedUnit> implements Serializable {
    public static final long serialVersionUID = 0L;
    public final void apply(final String x$1) {
        Register$.MODULE$.serviceInst().process(x$1);
    }
}

public static final class Client2$$anonfun$process$1 extends AbstractFunction1<String, BoxedUnit> implements Serializable {
    public static final long serialVersionUID = 0L;
    private final Service eta$0$1$1;

    public final void apply(final String s) {
        this.eta$0$1$1.process(s);
    }
}

```