public Step(String name, Rule rules[], int min, String suffixes[]) {this.name = name;this.rules = rules;if (min == 0) {min = Integer.MAX_VALUE;for (Rule r : rules)min = Math.min(min, r.min + r.suffix.length);}this.min = min;if (suffixes == null || suffixes.length == 0) {this.suffixes = null;} else {this.suffixes = new char[suffixes.length][];for (int i = 0; i < suffixes.length; i++)this.suffixes[i] = suffixes[i].toCharArray();}}

public Step(string name, Rule[] rules, int min, string[] suffixes){this.m_name = name;this.m_rules = rules;if (min == 0){min = int.MaxValue;foreach (Rule r in rules){min = Math.Min(min, r.m_min + r.m_suffix.Length);}}this.m_min = min;if (suffixes == null || suffixes.Length == 0){this.m_suffixes = null;}else{this.m_suffixes = new char[suffixes.Length][];for (int i = 0; i < suffixes.Length; i++){this.m_suffixes[i] = suffixes[i].ToCharArray();}}}
