public static List explodeVariablizedString(String string) {
    { List list = List.newList();
      int endofstring = string.length();
      int begin = 0;
      int end = Stella.NULL_INTEGER;
      String substring = null;
      Symbol symbol = null;

      for (;;) {
        if (begin >= endofstring) {
          return (list);
        }
        end = Native.string_position(string, '?', begin);
        if (end == Stella.NULL_INTEGER) {
          substring = Native.string_subsequence(string, begin, endofstring);
          list.insertLast(StringWrapper.wrapString(substring));
          return (list);
        }
        else if (end > begin) {
          substring = Native.string_subsequence(string, begin, end);
          list.insertLast(StringWrapper.wrapString(substring));
        }
        begin = end;
        end = Native.string_position(string, ' ', begin);
        if (end == Stella.NULL_INTEGER) {
          end = endofstring;
        }
        substring = Native.string_subsequence(string, begin, end);
        symbol = Symbol.internSymbol(Native.stringUpcase(substring));
        list.insertLast(symbol);
        begin = end;
      }
    }
  }