// Path: src/main/java/com/pidanic/saral/domain/ProcedureCall.java
// public class ProcedureCall implements SimpleStatement {
// 
//     private Function function;
//     private List<CalledArgument> arguments;
// 
//     public ProcedureCall(Function function, List<CalledArgument> calledArguments) {
//         this.function = function;
//         this.arguments = new ArrayList<>(calledArguments);
//     }
// 
//     @Override
//     public void accept(StatementGenerator generator) {
//         ((SimpleStatementGenerator) generator).generate(this);
//     }
// 
//     public List<CalledArgument> getCalledArguments() {
//         return Collections.unmodifiableList(arguments);
//     }
// 
//     public Function getFunction() {
//         return function;
//     }
// }
// 
// Path: src/main/java/com/pidanic/saral/domain/expression/FunctionCall.java
// public class FunctionCall extends Expression {
// 
//     private Function function;
//     private List<CalledArgument> arguments;
// 
//     public List<CalledArgument> getCalledArguments() {
//         return Collections.unmodifiableList(arguments);
//     }
// 
//     public Function getFunction() {
//         return function;
//     }
// 
//     public FunctionCall(Function function, List<CalledArgument> calledArguments) {
//         super(function.getReturnType());
//         this.function = function;
//         this.arguments = new ArrayList<>(calledArguments);
//     }
// 
// 
//     @Override
//     public void accept(ExpressionGenerator generator) {
//         generator.generate(this);
//     }
// }


import com.pidanic.saral.domain.ProcedureCall;
import com.pidanic.saral.domain.expression.FunctionCall;
package com.pidanic.saral.exception;


public class FunctionCallNotFound extends RuntimeException {
    public FunctionCallNotFound(FunctionCall functionCall) {
        super("No procedure found for name " + functionCall.getFunction().getName());
    }

// Path: src/main/java/com/pidanic/saral/domain/ProcedureCall.java
// public class ProcedureCall implements SimpleStatement {
// 
//     private Function function;
//     private List<CalledArgument> arguments;
// 
//     public ProcedureCall(Function function, List<CalledArgument> calledArguments) {
//         this.function = function;
//         this.arguments = new ArrayList<>(calledArguments);
//     }
// 
//     @Override
//     public void accept(StatementGenerator generator) {
//         ((SimpleStatementGenerator) generator).generate(this);
//     }
// 
//     public List<CalledArgument> getCalledArguments() {
//         return Collections.unmodifiableList(arguments);
//     }
// 
//     public Function getFunction() {
//         return function;
//     }
// }
// 
// Path: src/main/java/com/pidanic/saral/domain/expression/FunctionCall.java
// public class FunctionCall extends Expression {
// 
//     private Function function;
//     private List<CalledArgument> arguments;
// 
//     public List<CalledArgument> getCalledArguments() {
//         return Collections.unmodifiableList(arguments);
//     }
// 
//     public Function getFunction() {
//         return function;
//     }
// 
//     public FunctionCall(Function function, List<CalledArgument> calledArguments) {
//         super(function.getReturnType());
//         this.function = function;
//         this.arguments = new ArrayList<>(calledArguments);
//     }
// 
// 
//     @Override
//     public void accept(ExpressionGenerator generator) {
//         generator.generate(this);
//     }
// }


// Path: src/main/java/com/pidanic/saral/exception/FunctionCallNotFound.java
import com.pidanic.saral.domain.ProcedureCall;
import com.pidanic.saral.domain.expression.FunctionCall;

package com.pidanic.saral.exception;


public class FunctionCallNotFound extends RuntimeException {
    public FunctionCallNotFound(FunctionCall functionCall) {
        super("No procedure found for name " + functionCall.getFunction().getName());
    }

    public FunctionCallNotFound(ProcedureCall functionCall) {