#3 and #4 create map and inferable mapping methods for public usage

Hmm. That would require to add an additional printMessage method, with element like this:

```void printMessage(Messager messager, Kind kind, String message , Element element)```

Note: for `SourceMethod` the current implementation looks like this:
```
    @Override
    public void printMessage( Messager messager, Kind kind, String message ) {
        messager.printMessage( kind, message, executable );
    }
```
Need to think about this some more.