// Path: src/main/java/com/jenkov/container/script/ParserException.java
// public class ParserException extends ContainerException {
// 
//     public ParserException(String errorContext, String errorCode, String errorMessage) {
//         super(errorContext, errorCode, errorMessage);
//     }
// 
//     public ParserException(String errorContext, String errorCode, String errorMessage, Throwable cause) {
//         super(errorContext, errorCode, errorMessage, cause);
//     }
// }


import com.jenkov.container.script.ParserException;
                            } else {
                                unread(next);
                                return;
                            }
                case 'F' :
                case 'T' : if(token.length() == 1 && token.charAt(0) == '1'){ //if is thread singleton or flyweight.
                              append(token, (char) next);
                              return;
                           }

                default :   unread(next); return;

            }
        }
    }

    private Token getToken() {
        Token token = inputBuffer.token();
        return token;
    }

    /**
     * This method returns the same string instance per delimiter, instead of returning a new string instance
     * every time a delimiter is met. You can think of this method as a hardcoded flyweight (GOF pattern).
     *
     * @deprecated No longer used.
     */
    private Token readSignificantDelimiter() {
        Token token = Token.delimiterToken((char) this.nextChar);
        if(token != null) return token;
// Path: src/main/java/com/jenkov/container/script/ParserException.java
// public class ParserException extends ContainerException {
// 
//     public ParserException(String errorContext, String errorCode, String errorMessage) {
//         super(errorContext, errorCode, errorMessage);
//     }
// 
//     public ParserException(String errorContext, String errorCode, String errorMessage, Throwable cause) {
//         super(errorContext, errorCode, errorMessage, cause);
//     }
// }


// Path: src/main/java/com/jenkov/container/script/ScriptTokenizer.java
import com.jenkov.container.script.ParserException;

                            } else {
                                unread(next);
                                return;
                            }
                case 'F' :
                case 'T' : if(token.length() == 1 && token.charAt(0) == '1'){ //if is thread singleton or flyweight.
                              append(token, (char) next);
                              return;
                           }

                default :   unread(next); return;

            }
        }
    }

    private Token getToken() {
        Token token = inputBuffer.token();
        return token;
    }

    /**
     * This method returns the same string instance per delimiter, instead of returning a new string instance
     * every time a delimiter is met. You can think of this method as a hardcoded flyweight (GOF pattern).
     *
     * @deprecated No longer used.
     */
    private Token readSignificantDelimiter() {
        Token token = Token.delimiterToken((char) this.nextChar);
        if(token != null) return token;
        throw new ParserException(