Hum... This works too, but I'd be more comfortable with explicit forwarding. It leaks less abstraction:

```D
        @property bool empty()
        {
            return impl.refCountedPayload.empty;
        }

        @property Char[] front()
        {
            return impl.refCountedPayload.front;
        }

        void popFront()
        {
            impl.refCountedPayload.popFront();
        }
```

The alias this approach is really meant to to emulate struct inheritance. Using it like this has ways of subtly breaking (your ByLine degenrating to a `RefCounted!ByLineImpl`, itself degenrating to a `ByLineImpl`). I'd question that RefCounted behave the way it does at all, IMO, but it's too late for that.