public Annotation(Library l, Hashtable h) {
        super(l, h);
        // type of Annotation
        subtype = (Name) getObject(SUBTYPE_KEY);

        // no borders for the followING types,  not really in the
        // spec for some reason, Acrobat doesn't render them.
        canDrawBorder = !(SUBTYPE_LINE.equals(subtype) ||
                SUBTYPE_CIRCLE.equals(subtype) ||
                SUBTYPE_SQUARE.equals(subtype) ||
                SUBTYPE_POLYGON.equals(subtype) ||
                SUBTYPE_POLYLINE.equals(subtype));

        // parse out border style if available
        Hashtable BS = (Hashtable) getObject(BORDER_STYLE_KEY);
        if (BS != null) {
            borderStyle = new BorderStyle(library, BS);
        }
        // get old school border
        Object borderObject = getObject(BORDER_KEY);
        if (borderObject != null && borderObject instanceof Vector) {
            border = (Vector<Number>) borderObject;
        }

        // parse out border colour, specific to link annotations.
        color = Color.black; // we default to black but probably should be null
        Vector C = (Vector) getObject(COLOR_KEY);
        // parse thought rgb colour.
        if (C != null && C.size() >= 3) {
            float red = ((Number) C.get(0)).floatValue();
            float green = ((Number) C.get(1)).floatValue();
            float blue = ((Number) C.get(2)).floatValue();
            red = Math.max(0.0f, Math.min(1.0f, red));
            green = Math.max(0.0f, Math.min(1.0f, green));
            blue = Math.max(0.0f, Math.min(1.0f, blue));
            color = new Color(red, green, blue);
        }
    }