Function_3(Dictionary d) {
        super(d);

        // Convert bounds dictionary values.
        Vector boundTemp = (Vector) d.getObject("Bounds");
        if (boundTemp != null) {
            bounds = new float[boundTemp.size()];
            for (int i = 0; i < boundTemp.size(); i++) {
                bounds[i] = ((Number) boundTemp.elementAt(i)).floatValue();
            }
        }

        // convert encode dictionary.
        Vector encodeTemp = (Vector) d.getObject("Encode");
        if (encodeTemp != null) {
            encode = new float[encodeTemp.size()];
            for (int i = 0; i < encodeTemp.size(); i++) {
                encode[i] = ((Number) encodeTemp.elementAt(i)).floatValue();
            }
        }

        Vector functionTemp = (Vector) d.getObject("Functions");
        if (encodeTemp != null) {
            functions = new Function[functionTemp.size()];
            for (int i = 0; i < functionTemp.size(); i++) {
                functions[i] = Function.getFunction(d.getLibrary(), functionTemp.get(i));
//                System.out.println("Function " + functions[i].toString());
            }
        }

    }