// Path: src/org/kefirsf/bb/util/Exceptions.java
// public final class Exceptions {
// 
//     private static final String NULL_ARGUMENT = "Argument {0} can't be null.";
//     private static final String EMPTY_ARGUMENT = "Argument {0} can't be empty.";
//     private static final String BLANK_ARGUMENT = "Argument {0} can't be blank.";
//     private static final String NEGATIVE_ARGUMENT = "Argument {0} can't be negative.";
// 
//     /**
//      * Prevent to create an instance.
//      */
//     private Exceptions() {
//     }
// 
//     public static void nullArgument(String name, Object value) throws IllegalArgumentException {
//         if (value == null) {
//             throw new IllegalArgumentException(MessageFormat.format(NULL_ARGUMENT, name));
//         }
//     }
// 
//     public static <E> void emptyArgument(String name, Collection<E> value) throws IllegalArgumentException {
//         if (value == null || value.isEmpty()) {
//             throw new IllegalArgumentException(MessageFormat.format(EMPTY_ARGUMENT, name));
//         }
//     }
// 
//     public static void blankArgument(String name, CharSequence value) throws IllegalArgumentException {
//         if (value == null || value.toString().trim().length() == 0) {
//             throw new IllegalArgumentException(MessageFormat.format(BLANK_ARGUMENT, name));
//         }
//     }
// 
//     public static void negativeArgument(String name, int offset) {
//         if(offset<0){
//             throw new IllegalArgumentException(MessageFormat.format(NEGATIVE_ARGUMENT, name));
//         }
//     }
// }


import org.kefirsf.bb.util.Exceptions;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
     *
     * @return map of parameters
     */
    public Map<String, CharSequence> getParams() {
        return params;
    }

    /**
     * Set parameters to configuration.
     *
     * @param params the map with parameters. Key is a parameter name.
     */
    public void setParams(Map<String, CharSequence> params) {
        this.params = Collections.unmodifiableMap(params);
    }

    /**
     * Get nesting limit. How many codes can be nested.
     *
     * @return nesting limit
     */
    public int getNestingLimit() {
        return nestingLimit;
    }

    /**
     * Set nesting limit. How many codes can be nested.
     *
     * @param nestingLimit nesting limit
     */
// Path: src/org/kefirsf/bb/util/Exceptions.java
// public final class Exceptions {
// 
//     private static final String NULL_ARGUMENT = "Argument {0} can't be null.";
//     private static final String EMPTY_ARGUMENT = "Argument {0} can't be empty.";
//     private static final String BLANK_ARGUMENT = "Argument {0} can't be blank.";
//     private static final String NEGATIVE_ARGUMENT = "Argument {0} can't be negative.";
// 
//     /**
//      * Prevent to create an instance.
//      */
//     private Exceptions() {
//     }
// 
//     public static void nullArgument(String name, Object value) throws IllegalArgumentException {
//         if (value == null) {
//             throw new IllegalArgumentException(MessageFormat.format(NULL_ARGUMENT, name));
//         }
//     }
// 
//     public static <E> void emptyArgument(String name, Collection<E> value) throws IllegalArgumentException {
//         if (value == null || value.isEmpty()) {
//             throw new IllegalArgumentException(MessageFormat.format(EMPTY_ARGUMENT, name));
//         }
//     }
// 
//     public static void blankArgument(String name, CharSequence value) throws IllegalArgumentException {
//         if (value == null || value.toString().trim().length() == 0) {
//             throw new IllegalArgumentException(MessageFormat.format(BLANK_ARGUMENT, name));
//         }
//     }
// 
//     public static void negativeArgument(String name, int offset) {
//         if(offset<0){
//             throw new IllegalArgumentException(MessageFormat.format(NEGATIVE_ARGUMENT, name));
//         }
//     }
// }


// Path: src/org/kefirsf/bb/conf/Configuration.java
import org.kefirsf.bb.util.Exceptions;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

     *
     * @return map of parameters
     */
    public Map<String, CharSequence> getParams() {
        return params;
    }

    /**
     * Set parameters to configuration.
     *
     * @param params the map with parameters. Key is a parameter name.
     */
    public void setParams(Map<String, CharSequence> params) {
        this.params = Collections.unmodifiableMap(params);
    }

    /**
     * Get nesting limit. How many codes can be nested.
     *
     * @return nesting limit
     */
    public int getNestingLimit() {
        return nestingLimit;
    }

    /**
     * Set nesting limit. How many codes can be nested.
     *
     * @param nestingLimit nesting limit
     */
    public void setNestingLimit(int nestingLimit) {