role Maker[:$from,:$to] {
has $!wc;
has $.basename;
has $.dir;
method process-contents(:$from-contents) { ... }
method get-files() {
my %dsts = $!wc.get-files($.dir,$.basename,$from);
my %srcs = $!wc.get-files($.dir,$.basename,$to);
for %srcs.keys -> $lang {
my $src = %srcs{$lang};
next if %dsts{$lang} and
%dsts{$lang}.modified after $src.modified;
my $processed-contents = .process-contents($src.slurp);
%dsts{$lang} = $!wc.put-file($.dir,$.basename,$lang,$to,
$processed-contents)
}
}
}