package org.zwobble.couscous.values; import java.util.List; import java.util.function.BiFunction; import java.util.function.Supplier; import org.zwobble.couscous.interpreter.Arguments; import org.zwobble.couscous.interpreter.Environment; import lombok.AccessLevel; import lombok.Getter; import lombok.Value; @Value public class StaticMethodValue implements Callable { @Getter(value=AccessLevel.NONE) Supplier>> argumentTypes; @Getter(value=AccessLevel.NONE) BiFunction apply; @Override public List> getArgumentTypes() { return argumentTypes.get(); } public InterpreterValue apply(Environment environment, Arguments arguments) { return apply.apply(environment, arguments); } }