protected override async Task <bool> Not(Task <bool> input, GateContext context) { return(!(await input)); }
protected override Task <bool> Virtualize(Task <bool> value, GateContext context) { return(value); }
protected override async Task <bool> Xor(Task <bool> leftInput, Task <bool> rightInput, GateContext context) { return((await leftInput) ^ (await rightInput)); }
protected override Task <bool> Unvirtualize(Task <bool> input, GateContext context) { return(input); }
protected abstract Task <bool> Unvirtualize(Task <T> input, GateContext context);
protected abstract Task <T> Virtualize(Task <bool> value, GateContext context);
protected abstract Task <T> Not(Task <T> input, GateContext context);
protected abstract Task <T> Xor(Task <T> leftInput, Task <T> rightInput, GateContext context);