public static FunctionType Create(Type returnType, Type[] parameterTypes, bool isVarArg) => LLVM.FunctionType(returnType.Unwrap(), parameterTypes.Unwrap(), isVarArg?new LLVMBool(1) : new LLVMBool(0)).WrapAs <FunctionType>();
public static FunctionType Create(Type returnType, bool isVarArg) => Create(returnType, new Type[0], isVarArg);
public static FunctionType Create(Type returnType, params Type[] parameterTypes) => Create(returnType, parameterTypes, false);
public static FunctionType Create(Type returnType) => Create(returnType, false);