protected JCBlock makePrintBlock(TreeMaker maker, JavacElements utils, Time time, JCVariableDecl var) {
// Создаём вызов System.out.println
processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "making print expr");
JCExpression printlnExpression = maker.Ident(utils.getName("System"));
printlnExpression = maker.Select(printlnExpression, utils.getName("out"));
printlnExpression = maker.Select(printlnExpression, utils.getName("println"));
// Создаём блок вычисления затраченного времени (currentTime - startTime)
JCExpression currentTime = makeCurrentTime(maker, utils, time);
JCExpression elapsedTime = maker.Binary(JCTree.MINUS, currentTime, maker.Ident(var.name));
// Форматируем результат
JCExpression formatExpression = maker.Ident(utils.getName("String"));
formatExpression = maker.Select(formatExpression, utils.getName("format"));
// Собираем все кусочки вместе
List<JCExpression> formatArgs = List.nil();
formatArgs.append(maker.Literal(time.format()));
formatArgs.append(elapsedTime);
JCExpression format = maker.Apply(List.<JCExpression>nil(), formatExpression, formatArgs);
List<JCExpression> printlnArgs = List.nil();
printlnArgs.append(format);
JCExpression print = maker.Apply(List.<JCExpression>nil(), printlnExpression, printlnArgs);
JCExpressionStatement stmt = maker.Exec(print);
List<JCStatement> stmts = List.nil();
stmts.append(stmt);
processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "print expr ready: " + print.toString());
return maker.Block(0, stmts);
}