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


import com.jenkov.container.itf.factory.FactoryException;
package com.jenkov.container.impl.factory;


/**
 * @author Jakob Jenkov - Copyright 2004-2006 Jenkov Development
 */
public class FlyweightKey {
        Object[] parameters = null;
        int hashCode = 0;

        public FlyweightKey(Object[] parameters) {
            this.parameters = parameters;
            for(int i=0; i< parameters.length; i++){
// Path: src/main/java/com/jenkov/container/itf/factory/FactoryException.java
// public class FactoryException extends ContainerException {
//     public FactoryException(String errorContext, String errorCode, String errorMessage) {
//         super(errorContext, errorCode, errorMessage);
//     }
// 
//     public FactoryException(String errorContext, String errorCode, String errorMessage, Throwable cause) {
//         super(errorContext, errorCode, errorMessage, cause);
//     }
// 
// }


// Path: src/main/java/com/jenkov/container/impl/factory/FlyweightKey.java
import com.jenkov.container.itf.factory.FactoryException;

package com.jenkov.container.impl.factory;


/**
 * @author Jakob Jenkov - Copyright 2004-2006 Jenkov Development
 */
public class FlyweightKey {
        Object[] parameters = null;
        int hashCode = 0;

        public FlyweightKey(Object[] parameters) {
            this.parameters = parameters;
            for(int i=0; i< parameters.length; i++){
                if(parameters[i] == null) throw new FactoryException(