public static TokenizerTable unstringifyTokenizerTable(String table) {
    { TokenizerTable result = TokenizerTable.newTokenizerTable();
      int acode = (int) 'A';
      String line = null;
      int count = 0;
      StringBuffer transitions = null;
      char separator = '|';
      int start = 0;
      int end = 0;

      end = Native.string_position(table, separator, start);
      line = Native.string_subsequence(table, start, end);
      start = end + 1;
      count = ((int)(Native.stringToInteger(line)));
      end = Native.string_position(table, separator, start);
      line = Native.string_subsequence(table, start, end);
      start = end + 1;
      transitions = edu.isi.stella.javalib.Native.makeMutableString((((int)(count / 2.0))), Stella.NULL_CHARACTER);
      { int i = Stella.NULL_INTEGER;
        int iter000 = 0;
        int upperBound000 = ((int)((count / 2.0) - 1));

        for (;iter000 <= upperBound000; iter000 = iter000 + 1) {
          i = iter000;
          edu.isi.stella.javalib.Native.mutableString_nthSetter(transitions, ((char) ((((int) (line.charAt((2 * i))) - acode) | ((((int) (line.charAt(((2 * i) + 1))) - acode) << 4))))), i);
        }
      }
      result.transitions = transitions.toString();
      end = Native.string_position(table, separator, start);
      line = Native.string_subsequence(table, start, end);
      start = end + 1;
      count = ((int)(Native.stringToInteger(line)));
      result.uniqueStateNames = Vector.newVector(count);
      { int i = Stella.NULL_INTEGER;
        int iter001 = 0;
        int upperBound001 = count - 1;

        for (;iter001 <= upperBound001; iter001 = iter001 + 1) {
          i = iter001;
          end = Native.string_position(table, separator, start);
          line = Native.string_subsequence(table, start, end);
          start = end + 1;
          (result.uniqueStateNames.theArray)[i] = (Stella.internKeyword(line));
        }
      }
      end = Native.string_position(table, separator, start);
      line = Native.string_subsequence(table, start, end);
      start = end + 1;
      count = ((int)(Native.stringToInteger(line)));
      result.stateNames = Vector.newVector(count);
      { int i = Stella.NULL_INTEGER;
        int iter002 = 0;
        int upperBound002 = count - 1;

        for (;iter002 <= upperBound002; iter002 = iter002 + 1) {
          i = iter002;
          end = Native.string_position(table, separator, start);
          line = Native.string_subsequence(table, start, end);
          start = end + 1;
          (result.stateNames.theArray)[i] = (Stella.internKeyword(line));
        }
      }
      end = Native.string_position(table, separator, start);
      line = Native.string_subsequence(table, start, end);
      start = end + 1;
      count = ((int)(Native.stringToInteger(line)));
      end = Native.string_position(table, separator, start);
      line = Native.string_subsequence(table, start, end);
      start = end + 1;
      result.legalEofStates = Vector.newVector(count);
      { int i = Stella.NULL_INTEGER;
        int iter003 = 0;
        int upperBound003 = count - 1;

        for (;iter003 <= upperBound003; iter003 = iter003 + 1) {
          i = iter003;
          switch (line.charAt(i)) {
            case 'T': 
              (result.legalEofStates.theArray)[i] = Stella.TRUE_WRAPPER;
            break;
            case 'F': 
              (result.legalEofStates.theArray)[i] = Stella.FALSE_WRAPPER;
            break;
            default:
              { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

                stream000.nativeStream.print("`" + line.charAt(i) + "' is not a valid case option");
                throw ((StellaException)(StellaException.newStellaException(stream000.theStringReader()).fillInStackTrace()));
              }
          }
        }
      }
      return (result);
    }
  }