public org.icepdf.core.pobjects.actions.Action getAction() {
        Object tmp = library.getDictionary(entries, ACTION_KEY.getName());
        // initial parse will likely have the action as a dictionary, so we
        // create the new action object on the fly.  However it is also possible
        // that we are parsing an action that has no type specification and 
        // thus we can't use the parser to create the new action.
        if (tmp != null && tmp instanceof Hashtable) {
            Action action = Action.buildAction(library, (Hashtable) tmp);
            // assign reference if applicable
            if (action != null &&
                    library.isReference(entries, ACTION_KEY.getName())) {
                action.setPObjectReference(
                        library.getReference(entries, ACTION_KEY.getName()));
            }
            return action;
        }
        // subsequent new or edit actions will put in a reference and property
        // dictionary entry.
        tmp = getObject(ACTION_KEY);
        if (tmp != null && tmp instanceof Action) {
            return (Action) tmp;
        }
        return null;
    }