String id; String kind; String next;
  public NameComponent[] toName(String a_name)                         throws InvalidName  {    ArrayList components = new ArrayList();    StringTokenizer st = new StringTokenizer(a_name, "./\\", true);    String id;    String kind;    String next;    // Create the buffer array, reserving the last element for null.    String[] n = new String[ st.countTokens() + 1 ];    int pp = 0;    while (st.hasMoreTokens())      n [ pp++ ] = st.nextToken();    IntHolder p = new IntHolder();    NameComponent node = readNode(p, n);    while (node != null)      {        components.add(node);        node = readNode(p, n);      }    NameComponent[] name = new NameComponent[ components.size() ];    for (int i = 0; i < name.length; i++)      {        name [ i ] = (NameComponent) components.get(i);      }    NameValidator.check(name);    return name;  }