Source:
public BytecodeNode visitCall(CallExpression call, Context context) { FunctionManager functionManager = metadata.getFunctionManager(); FunctionMetadata functionMetadata = functionManager.getFunctionMetadata(call.getFunctionHandle()); switch (functionMetadata.getImplementationType()) { case BUILTIN: BytecodeGeneratorContext generatorContext = new BytecodeGeneratorContext( RowExpressionCompiler.this, context.getScope(), callSiteBinder, cachedInstanceBinder, functionManager); return (new FunctionCallCodeGenerator()).generateCall(call.getFunctionHandle(), generatorContext, call.getType(), call.getArguments(), context.getOutputBlockVariable()); case SQL: ScalarFunctionImplementation functionImplementation = functionManager.getScalarFunctionImplementation(call.getFunctionHandle()); RowExpression function = getSqlFunctionRowExpression(functionMetadata, functionImplementation, metadata, sqlFunctionProperties, call.getArguments()); ImmutableMap.Builder<LambdaDefinitionExpression, LambdaBytecodeGenerator.CompiledLambda> newCompiledLambdaMap = ImmutableMap.builder(); newCompiledLambdaMap.putAll(compiledLambdaMap); newCompiledLambdaMap.putAll(generateMethodsForLambda(classDefinition, callSiteBinder, cachedInstanceBinder, function, metadata, sqlFunctionProperties, "sql")); return new RowExpressionCompiler(classDefinition, callSiteBinder, cachedInstanceBinder, fieldReferenceCompiler, metadata, sqlFunctionProperties, newCompiledLambdaMap.build()).compile( function, context.getScope(), context.getOutputBlockVariable(), context.getLambdaInterface()); default: throw new UnsupportedOperationException(); } }

Target:
public BytecodeNode visitCall(CallExpression call, Context context) { FunctionManager functionManager = metadata.getFunctionManager(); FunctionMetadata functionMetadata = functionManager.getFunctionMetadata(call.getFunctionHandle()); switch (functionMetadata.getImplementationType()) { case BUILTIN: BytecodeGeneratorContext generatorContext = new BytecodeGeneratorContext( RowExpressionCompiler.this, context.getScope(), callSiteBinder, cachedInstanceBinder, functionManager); return (new FunctionCallCodeGenerator()).generateCall(call.getFunctionHandle(), generatorContext, call.getType(), call.getArguments(), context.getOutputBlockVariable()); case SQL: SqlInvokedScalarFunctionImplementation functionImplementation = (SqlInvokedScalarFunctionImplementation) functionManager.getScalarFunctionImplementation(call.getFunctionHandle()); RowExpression function = getSqlFunctionRowExpression(functionMetadata, functionImplementation, metadata, sqlFunctionProperties, call.getArguments()); ImmutableMap.Builder<LambdaDefinitionExpression, LambdaBytecodeGenerator.CompiledLambda> newCompiledLambdaMap = ImmutableMap.builder(); newCompiledLambdaMap.putAll(compiledLambdaMap); newCompiledLambdaMap.putAll(generateMethodsForLambda(classDefinition, callSiteBinder, cachedInstanceBinder, function, metadata, sqlFunctionProperties, "sql")); return new RowExpressionCompiler(classDefinition, callSiteBinder, cachedInstanceBinder, fieldReferenceCompiler, metadata, sqlFunctionProperties, newCompiledLambdaMap.build()).compile( function, context.getScope(), context.getOutputBlockVariable(), context.getLambdaInterface()); default: throw new IllegalArgumentException(format("Unsupported function implementation type: %s", functionMetadata.getImplementationType())); } }