public final Token<?> getToken(final String tokenString) throws FunctionNotDefinedException {
        switch (deduceTokenType(tokenString)) {
            case OpenBracket:
                return new BracketToken.Open(tokenString);
            case ClosedBracket:
                return new BracketToken.Closed(tokenString);
            case Comma:
                return new BracketToken.Comma(tokenString);
            case Number:
                return new NumberToken(tokenString);
            case Function:
                return new FunctionToken(tokenString, functionRepository.get(tokenString));
            default:
                throw new UnsupportedOperationException("Unsupported token type for token string: " + tokenString);
        }
    }