public Actions Build(ILogger logger, States states, Symbols symbols, ConflictResolvers resolvers) { var data = new int[states.Count, symbols.Count]; for (var j = 0; j < data.GetLength(0); j++) { for (var i = 0; i < data.GetLength(1); i++) { data[j, i] = -1; } } foreach (var stateAction in actions) { foreach (var q in stateAction.Value) { var items = q.Value; if (items.Count == 0) { continue; } if (items.Count == 1) { data[stateAction.Key, q.Key] = items[0]; } else if (resolvers.TryFind( state: stateAction.Key, symbol: q.Key, action: out var resolveAction) && items.Contains(resolveAction)) { data[stateAction.Key, q.Key] = resolveAction; }