@Override
    protected Type typeCheckLocal(Scope<Type> scope) {
        // Not must be typechecked in an interior scope because information doesn't flow back out of `not`.
        return scope.inScope(() -> context("while typechecking `not`",
                this,
                () -> expectOneArgument().typeCheck(scope).expectBooleanType()));
    }
Creates a {@link Not} function from the given expressions.

@param arg1 the expression to negate.
@return The resulting {@link Not} function.
smithy-rules-engine/src/main/java/software/amazon/smithy/rulesengine/language/syntax/expressions/functions/Not.java