sclass AudioLine { Mixer mixer; Line.Info lineInfo; *() {} *(Mixer *mixer, Line.Info *lineInfo) {} Line open() { ret mixer.getLine(lineInfo); } } static L allAudioLines() { ret concatMap(listAudioDevices(), f allAudioLines); } static L allAudioLines(Mixer m) { new L l; for (Line.Info lineInfo : concatLists( asList(m.getTargetLineInfo()), asList(m.getSourceLineInfo()))) l.add(new AudioLine(m, lineInfo)); ret l; }