* @param enablecaseconversionP
   * @param MV_returnarray
   * @return String
   */
  public static String parseStellaName(String name, boolean enablecaseconversionP, Object [] MV_returnarray) {
    { String symbolname = null;
      String modulename = null;
      Keyword symboltype = null;
      int separatorpos = 0;
      boolean upcaseP = enablecaseconversionP &&
          (!((Module)(Stella.$MODULE$.get())).caseSensitiveP);

      { TokenizerTable tok_table_ = Stella.$STELLA_TOKENIZER_TABLE$;
        String tok_transitions_ = tok_table_.transitions;
        edu.isi.stella.Stella_Object[] tok_statenames_ = tok_table_.stateNames.theArray;
        int tok_tokenstart_ = -1;
        boolean tok_endoftokensP_ = false;
        TokenizerStreamState tok_streamstate_ = null;
        char[] tok_buffer_ = name.toCharArray();
        int tok_state_ = 1;
        int tok_nextstate_ = tok_state_;
        int tok_cursor_ = 0;
        int tok_size_ = name.length();
        int tok_end_ = tok_size_;

        {
          tok_statenames_ = tok_statenames_;
          tok_endoftokensP_ = tok_endoftokensP_;
        }
        tok_streamstate_ = tok_streamstate_;
        { edu.isi.stella.Stella_Object[] tok_stellalogicalstatenames_ = Stella.$STELLA_LOGICAL_STATE_NAMES$.theArray;
          Keyword tok_stellalogicalstatename_ = null;

          {
            {
              tok_tokenstart_ = -1;
              loop000 : for (;;) {
                if (tok_cursor_ == tok_end_) {
                  if (tok_nextstate_ == -1) {
                    tok_endoftokensP_ = true;
                  }
                  else if (BooleanWrapper.coerceWrappedBooleanToBoolean(((BooleanWrapper)((tok_table_.legalEofStates.theArray)[tok_state_])))) {
                    tok_nextstate_ = -1;
                    if (tok_tokenstart_ == -1) {
                      tok_endoftokensP_ = true;
                    }
                  }
                  else {
                    tok_state_ = 0;
                    tok_nextstate_ = -1;
                  }
                  break loop000;
                }
                tok_nextstate_ = (int) (tok_transitions_.charAt(((((tok_state_ << 8)) | ((int) (((char) (0x00ff & tok_buffer_[tok_cursor_]))))))));
                if ((tok_nextstate_ & 128) == 0) {
                  tok_state_ = tok_nextstate_;
                  tok_cursor_ = tok_cursor_ + 1;
                }
                else if (tok_tokenstart_ == -1) {
                  if ((tok_nextstate_ & 64) == 0) {
                    tok_tokenstart_ = tok_cursor_;
                  }
                  tok_state_ = (tok_nextstate_ & 63);
                  tok_cursor_ = tok_cursor_ + 1;
                }
                else {
                  break loop000;
                }
              }
            }
            tok_stellalogicalstatename_ = ((Keyword)(tok_stellalogicalstatenames_[tok_state_]));
          }
          if (tok_endoftokensP_) {
            { String _return_temp = null;

              MV_returnarray[0] = StringWrapper.wrapString(null);
              MV_returnarray[1] = null;
              return (_return_temp);
            }
          }
          if (tok_stellalogicalstatename_ == Stella.KWD_SYMBOL) {
            { GeneralizedSymbol testValue000 = ((GeneralizedSymbol)(tok_statenames_[tok_state_]));

              if (testValue000 == Stella.KWD_SYMBOL) {
                symbolname = Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_, tok_cursor_, tok_size_, upcaseP);
              }
              else if (testValue000 == Stella.KWD_QUALIFIED_SYMBOL) {
                separatorpos = Stella.getQualifiedSymbolSeparatorPositionInternal(tok_buffer_, tok_tokenstart_, tok_cursor_, tok_size_, Stella.KWD_NONE);
                symbolname = Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_ + separatorpos + 1, tok_cursor_, tok_size_, upcaseP);
                modulename = ((separatorpos == 0) ? "ROOT-MODULE" : Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_, ((separatorpos < 0) ? (tok_cursor_ + separatorpos) : (tok_tokenstart_ + separatorpos)), tok_size_, true));
              }
              else if (testValue000 == Stella.KWD_FULLY_ESCAPED_SYMBOL) {
                symbolname = Stella.unescapeTokenString(Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_ + 1, tok_cursor_, tok_size_, false), '\\', false);
              }
              else if (testValue000 == Stella.KWD_QUALIFIED_FULLY_ESCAPED_SYMBOL) {
                separatorpos = Stella.getQualifiedSymbolSeparatorPositionInternal(tok_buffer_, tok_tokenstart_, tok_cursor_, tok_size_, Stella.KWD_FULLY_ESCAPED);
                symbolname = Stella.unescapeTokenString(Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_ + separatorpos + 2, tok_cursor_, tok_size_, false), '\\', false);
                modulename = ((separatorpos == 0) ? "ROOT-MODULE" : Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_, ((separatorpos < 0) ? (tok_cursor_ + separatorpos) : (tok_tokenstart_ + separatorpos)), tok_size_, true));
              }
              else if (testValue000 == Stella.KWD_ESCAPED_SYMBOL) {
                symbolname = Stella.unescapeTokenString(Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_, tok_cursor_, tok_size_, false), '\\', upcaseP);
              }
              else if (testValue000 == Stella.KWD_QUALIFIED_ESCAPED_SYMBOL) {
                separatorpos = Stella.getQualifiedSymbolSeparatorPositionInternal(tok_buffer_, tok_tokenstart_, tok_cursor_, tok_size_, Stella.KWD_ESCAPED);
                symbolname = Stella.unescapeTokenString(Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_ + separatorpos + 1, tok_cursor_, tok_size_, false), '\\', upcaseP);
                modulename = ((separatorpos == 0) ? "ROOT-MODULE" : Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_, ((separatorpos < 0) ? (tok_cursor_ + separatorpos) : (tok_tokenstart_ + separatorpos)), tok_size_, true));
              }
              else if (testValue000 == Stella.KWD_CL_SYMBOL) {
                symbolname = Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_ + 3, tok_cursor_, tok_size_, true);
                modulename = "/COMMON-LISP";
              }
              else {
                { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

                  stream000.nativeStream.print("`" + testValue000 + "' is not a valid case option");
                  throw ((StellaException)(StellaException.newStellaException(stream000.theStringReader()).fillInStackTrace()));
                }
              }
            }
          }
          else if (tok_stellalogicalstatename_ == Stella.KWD_SURROGATE) {
            { GeneralizedSymbol testValue001 = ((GeneralizedSymbol)(tok_statenames_[tok_state_]));

              if (testValue001 == Stella.KWD_SURROGATE) {
                symbolname = Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_ + 1, tok_cursor_, tok_size_, upcaseP);
              }
              else if (testValue001 == Stella.KWD_QUALIFIED_SURROGATE) {
                separatorpos = Stella.getQualifiedSymbolSeparatorPositionInternal(tok_buffer_, tok_tokenstart_, tok_cursor_, tok_size_, Stella.KWD_NONE);
                symbolname = Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_ + separatorpos + 2, tok_cursor_, tok_size_, upcaseP);
                modulename = ((separatorpos == 0) ? "ROOT-MODULE" : Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_, ((separatorpos < 0) ? (tok_cursor_ + separatorpos) : (tok_tokenstart_ + separatorpos)), tok_size_, true));
              }
              else if (testValue001 == Stella.KWD_FULLY_ESCAPED_SURROGATE) {
                symbolname = Stella.unescapeTokenString(Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_ + 2, tok_cursor_, tok_size_, false), '\\', false);
              }
              else if (testValue001 == Stella.KWD_QUALIFIED_FULLY_ESCAPED_SURROGATE) {
                separatorpos = Stella.getQualifiedSymbolSeparatorPositionInternal(tok_buffer_, tok_tokenstart_, tok_cursor_, tok_size_, Stella.KWD_FULLY_ESCAPED);
                symbolname = Stella.unescapeTokenString(Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_ + separatorpos + 3, tok_cursor_, tok_size_, false), '\\', false);
                modulename = ((separatorpos == 0) ? "ROOT-MODULE" : Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_, ((separatorpos < 0) ? (tok_cursor_ + separatorpos) : (tok_tokenstart_ + separatorpos)), tok_size_, true));
              }
              else if (testValue001 == Stella.KWD_ESCAPED_SURROGATE) {
                symbolname = Stella.unescapeTokenString(Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_ + 1, tok_cursor_, tok_size_, false), '\\', upcaseP);
              }
              else if (testValue001 == Stella.KWD_QUALIFIED_ESCAPED_SURROGATE) {
                separatorpos = Stella.getQualifiedSymbolSeparatorPositionInternal(tok_buffer_, tok_tokenstart_, tok_cursor_, tok_size_, Stella.KWD_ESCAPED);
                symbolname = Stella.unescapeTokenString(Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_ + separatorpos + 2, tok_cursor_, tok_size_, false), '\\', upcaseP);
                modulename = ((separatorpos == 0) ? "ROOT-MODULE" : Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_, ((separatorpos < 0) ? (tok_cursor_ + separatorpos) : (tok_tokenstart_ + separatorpos)), tok_size_, true));
              }
              else {
                { OutputStringStream stream001 = OutputStringStream.newOutputStringStream();

                  stream001.nativeStream.print("`" + testValue001 + "' is not a valid case option");
                  throw ((StellaException)(StellaException.newStellaException(stream001.theStringReader()).fillInStackTrace()));
                }
              }
            }
          }
          else if (tok_stellalogicalstatename_ == Stella.KWD_KEYWORD) {
            { GeneralizedSymbol testValue002 = ((GeneralizedSymbol)(tok_statenames_[tok_state_]));

              if (testValue002 == Stella.KWD_KEYWORD) {
                symbolname = Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_ + 1, tok_cursor_, tok_size_, true);
              }
              else if (testValue002 == Stella.KWD_FULLY_ESCAPED_KEYWORD) {
                symbolname = Stella.unescapeTokenString(Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_ + 2, tok_cursor_, tok_size_, false), '\\', false);
              }
              else if (testValue002 == Stella.KWD_ESCAPED_KEYWORD) {
                symbolname = Stella.unescapeTokenString(Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_ + 1, tok_cursor_, tok_size_, false), '\\', true);
              }
              else {
                { OutputStringStream stream002 = OutputStringStream.newOutputStringStream();

                  stream002.nativeStream.print("`" + testValue002 + "' is not a valid case option");
                  throw ((StellaException)(StellaException.newStellaException(stream002.theStringReader()).fillInStackTrace()));
                }
              }
            }
          }
          else if (tok_stellalogicalstatename_ == Stella.KWD_QUALIFIED_NAME) {
            { String token = Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_, tok_cursor_, tok_size_, true);
              int length = token.length();

              if ((length >= 1) &&
                  ((token.charAt((length - 1)) == '/') &&
                   ((length == 1) ||
                    (token.charAt((length - 2)) == '/')))) {
                symbolname = "/";
                tok_stellalogicalstatename_ = Stella.KWD_SYMBOL;
                if (length > 1) {
                  modulename = Native.string_subsequence(token, 0, length - 2);
                }
              }
              else {
                { OutputStringStream stream003 = OutputStringStream.newOutputStringStream();

                  stream003.nativeStream.print("Illegal symbol syntax: `" + Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_, tok_cursor_, tok_size_, false) + "' in state `" + ((GeneralizedSymbol)(tok_statenames_[tok_state_])) + "'");
                  throw ((ReadException)(ReadException.newReadException(stream003.theStringReader()).fillInStackTrace()));
                }
              }
            }
          }
          else if (tok_stellalogicalstatename_ == Stella.KWD_ERROR) {
            { OutputStringStream stream004 = OutputStringStream.newOutputStringStream();

              stream004.nativeStream.print("Illegal read syntax: `" + Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_, tok_cursor_, tok_size_, false) + "'");
              throw ((ReadException)(ReadException.newReadException(stream004.theStringReader()).fillInStackTrace()));
            }
          }
          else {
            { OutputStringStream stream005 = OutputStringStream.newOutputStringStream();

              stream005.nativeStream.print("Illegal symbol syntax: `" + Stella.getTokenTextInternal(tok_buffer_, tok_tokenstart_, tok_cursor_, tok_size_, false) + "' in state `" + ((GeneralizedSymbol)(tok_statenames_[tok_state_])) + "'");
              throw ((ReadException)(ReadException.newReadException(stream005.theStringReader()).fillInStackTrace()));
            }
          }
          symboltype = tok_stellalogicalstatename_;
          {
            {
              tok_tokenstart_ = -1;
              loop001 : for (;;) {
                if (tok_cursor_ == tok_end_) {
                  if (tok_nextstate_ == -1) {
                    tok_endoftokensP_ = true;
                  }
                  else if (BooleanWrapper.coerceWrappedBooleanToBoolean(((BooleanWrapper)((tok_table_.legalEofStates.theArray)[tok_state_])))) {
                    tok_nextstate_ = -1;
                    if (tok_tokenstart_ == -1) {
                      tok_endoftokensP_ = true;
                    }
                  }
                  else {
                    tok_state_ = 0;
                    tok_nextstate_ = -1;
                  }
                  break loop001;
                }
                tok_nextstate_ = (int) (tok_transitions_.charAt(((((tok_state_ << 8)) | ((int) (((char) (0x00ff & tok_buffer_[tok_cursor_]))))))));
                if ((tok_nextstate_ & 128) == 0) {
                  tok_state_ = tok_nextstate_;
                  tok_cursor_ = tok_cursor_ + 1;
                }
                else if (tok_tokenstart_ == -1) {
                  if ((tok_nextstate_ & 64) == 0) {
                    tok_tokenstart_ = tok_cursor_;
                  }
                  tok_state_ = (tok_nextstate_ & 63);
                  tok_cursor_ = tok_cursor_ + 1;
                }
                else {
                  break loop001;
                }
              }
            }
            tok_stellalogicalstatename_ = ((Keyword)(tok_stellalogicalstatenames_[tok_state_]));
          }
          if (tok_endoftokensP_ ||
              (((GeneralizedSymbol)(tok_statenames_[tok_state_])) == Stella.KWD_CLOSE_FULLY_ESCAPED_NAME)) {
            { String _return_temp = symbolname;

              MV_returnarray[0] = StringWrapper.wrapString(modulename);
              MV_returnarray[1] = symboltype;
              return (_return_temp);
            }
          }
          else {
            { OutputStringStream stream006 = OutputStringStream.newOutputStringStream();

              stream006.nativeStream.print("Garbage found after `" + name + "'");
              throw ((ReadException)(ReadException.newReadException(stream006.theStringReader()).fillInStackTrace()));
            }
          }
        }
      }
    }
  }