Taken from Bitbucket#156
Sometimes, effectively final fields are not initialized via a constructor, but via direct assignments on a newly created, not yet escaped object. This pattern is common e.g. for implementing clone:
int i;
public Foo clone(){
Foo f = new Foo();
f.i = i;
return f;
}
Identifying such patters would improve the precision of the field mutability analysis.