public XORGate(GateInputs input) { m_input = input ?? throw new ArgumentNullException(nameof(input)); }
public SchemeGate Freeze(IReadOnlyDictionary <SchemeNodeTemplate, SchemeNode> frozenNodes) => new SchemeGate( GateInputs.Select(x => (IReadOnlyList <SchemeNode>)x.Select(y => frozenNodes[y]).ToArray()).ToArray(), GatePowerNodes.Select(x => frozenNodes[x]).ToArray(), IsInversionGate, GateCells.ToArray());