public CharSequence[] decompose(CharSequence cmd) {int parts = 0;for (int i = 0; 0 <= i && i < cmd.length();) {int next = dashEven(cmd, i);if (i == next) {parts++;i = next + 2;} else {parts++;i = next;}}CharSequence part[] = new CharSequence[parts];int x = 0;for (int i = 0; 0 <= i && i < cmd.length();) {int next = dashEven(cmd, i);if (i == next) {part[x++] = cmd.subSequence(i, i + 2);i = next + 2;} else {part[x++] = (next < 0) ? cmd.subSequence(i, cmd.length()) : cmd.subSequence(i, next);i = next;}}return part;}

public virtual string[] Decompose(string cmd){int parts = 0;for (int i = 0; 0 <= i && i < cmd.Length;){int next = DashEven(cmd, i);if (i == next){parts++;i = next + 2;}else{parts++;i = next;}}string[] part = new string[parts];int x = 0;for (int i = 0; 0 <= i && i < cmd.Length;){int next = DashEven(cmd, i);if (i == next){part[x++] = cmd.Substring(i, 2);i = next + 2;}else{part[x++] = (next < 0) ? cmd.Substring(i, cmd.Length - i) : cmd.Substring(i, next - i);i = next;}}return part;}
