private void init() {

        // check for initiation
        if (inited) {
            return;
        }
        inited = true;

        // if vector we have found /XYZ
        if (object instanceof Vector) {
            parse((Vector) object);
        }

        // find named Destinations, this however is incomplete
        // @see #parser for more detailed information
        else if (object instanceof Name || object instanceof StringObject) {
            String s;
            // Make sure to decrypt this attribute
            if (object instanceof StringObject) {
                StringObject stringObject = (StringObject) object;
                s = stringObject.getDecryptedLiteralString(library.securityManager);
            } else {
                s = object.toString();
            }

            // store the name
            namedDestination = new Name(s);

            boolean found = false;
            Catalog catalog = library.getCatalog();
            if (catalog != null) {
                NameTree nameTree = catalog.getNameTree();
                if (nameTree != null) {
                    Object o = nameTree.searchName(s);
                    if (o != null) {
                        if (o instanceof Vector) {
                            parse((Vector) o);
                            found = true;
                        } else if (o instanceof Hashtable) {
                            Hashtable h = (Hashtable) o;
                            Object o1 = h.get("D");
                            if (o1 instanceof Vector) {
                                parse((Vector) o1);
                                found = true;
                            }
                        }
                    }
                }
                if (!found) {
                    Dictionary dests = catalog.getDestinations();
                    if (dests != null) {
                        Object ob = dests.getObject(s);
                        if (ob instanceof Hashtable) {
                            parse((Vector) (((Hashtable) ob).get("D")));
                        } else {
                            if (logger.isLoggable(Level.FINE)) {
                                logger.warning("Destination type missed=" + ob);
                            }
                        }
                    }
                }
            }
        }
    }