My rationale for shitfing the start position of one offset was to avoid generating overlapping positions. But, to some extent, I'm not sure it is not important if the `selectPos` start is indeed after the dot or not (so, yes, my comment is incorrect).

Let's take an example.

```
class Bar {
  def bar(b: Int = 2) {}
}

class Foo {
  def foo() {
    new Bar().bar/*#*/() \\ (1)
    new Bar() . bar/*#*/() \\ (2)
  }
}
```

Tree generated for (1):

```
      <70:90>{
        <70:79><artifact> val qual$1: [70]Bar = [70:79][70:79][70:79]new [74:77]Bar();
        [80]<artifact> val x$1: [80]Int = [80]qual$1.bar$default$1;
        <70:90>[80:83]qual$1.bar([80]x$1)
      };
```

Tree generated for (2):

```
    <70:90>{
      <70:79><artifact> val qual$1: [70]Bar = [70:79][70:79][70:79]new [74:77]Bar();
      [80]<artifact> val x$1: [80]Int = [80]qual$1.bar$default$1;
      <70:90>[79:83]qual$1.bar([80]x$1)
   };
```

Notice that the range position assigned to ``qual$1`` and ``qual$1.bar`` never overlap.

Now, say I change the above implementation of ``selectPos`` to the following (no more start offset shifting)

```
val selectPos = if(qual.pos.isRange && baseFun.pos.isRange) qual.pos.union(baseFun.pos).withStart(qual.pos.end)
  else baseFun.pos
```

Here is the resulting tree for case (1):

```
<70:90>{
        <70:79><artifact> val qual$1: [70]Bar = [70:79][70:79][70:79]new [74:77]Bar();
        [80]<artifact> val x$1: [80]Int = [80]qual$1.bar$default$1;
        <70:90>[79:83]qual$1.bar([80]x$1)
      };
```

Now, the range position of the ``qual$1`` rhs is the same as the start position of ``qual$1.bar``.

Am I worrying about a non-issue?