class PDArtifactMarkedContent extends PDMarkedContent
{

    public PDArtifactMarkedContent(COSDictionary properties)
    {
        super(COSName.ARTIFACT, properties);
    }


    /**
     * Gets the type (Type).
     * 
     * @return the type
     */
    public String getType()
    {
        return this.getProperties().getNameAsString(COSName.TYPE);
    }

    /**
     * Gets the artifact's bounding box (BBox).
     * 
     * @return the artifact's bounding box
     */
    public PDRectangle getBBox()
    {
        COSArray a = getProperties().getCOSArray(COSName.BBOX);
        return a != null ? new PDRectangle(a) : null;
    }

    /**
     * Is the artifact attached to the top edge?
     * 
     * @return <code>true</code> if the artifact is attached to the top edge,
     * <code>false</code> otherwise
     */
    public boolean isTopAttached()
    {
        return this.isAttached("Top");
    }

    /**
     * Is the artifact attached to the bottom edge?
     * 
     * @return <code>true</code> if the artifact is attached to the bottom edge,
     * <code>false</code> otherwise
     */
    public boolean isBottomAttached()
    {
        return this.isAttached("Bottom");
    }

    /**
     * Is the artifact attached to the left edge?
     * 
     * @return <code>true</code> if the artifact is attached to the left edge,
     * <code>false</code> otherwise
     */
    public boolean isLeftAttached()
    {
        return this.isAttached("Left");
    }

    /**
     * Is the artifact attached to the right edge?
     * 
     * @return <code>true</code> if the artifact is attached to the right edge,
     * <code>false</code> otherwise
     */
    public boolean isRightAttached()
    {
        return this.isAttached("Right");
    }

    /**
     * Gets the subtype (Subtype).
     * 
     * @return the subtype
     */
    public String getSubtype()
    {
        return this.getProperties().getNameAsString(COSName.SUBTYPE);
    }


    /**
     * Is the artifact attached to the given edge?
     * 
     * @param edge the edge
     * @return <code>true</code> if the artifact is attached to the given edge,
     * <code>false</code> otherwise
     */
    private boolean isAttached(String edge)
    {<FILL_FUNCTION_BODY>}

}

        COSArray a = getProperties().getCOSArray(COSName.ATTACHED);
        if (a != null)
        {
            for (int i = 0; i < a.size(); i++)
            {
                if (edge.equals(a.getName(i)))
                {
                    return true;
                }
            }
        }
        return false;
    
<methods>public void <init>(org.apache.pdfbox.cos.COSName, org.apache.pdfbox.cos.COSDictionary) ,public void addMarkedContent(org.apache.pdfbox.pdmodel.documentinterchange.markedcontent.PDMarkedContent) ,public void addText(org.apache.pdfbox.text.TextPosition) ,public void addXObject(org.apache.pdfbox.pdmodel.graphics.PDXObject) ,public static org.apache.pdfbox.pdmodel.documentinterchange.markedcontent.PDMarkedContent create(org.apache.pdfbox.cos.COSName, org.apache.pdfbox.cos.COSDictionary) ,public java.lang.String getActualText() ,public java.lang.String getAlternateDescription() ,public List<java.lang.Object> getContents() ,public java.lang.String getExpandedForm() ,public java.lang.String getLanguage() ,public int getMCID() ,public org.apache.pdfbox.cos.COSDictionary getProperties() ,public java.lang.String getTag() ,public java.lang.String toString() <variables>private final non-sealed List<java.lang.Object> contents,private final non-sealed org.apache.pdfbox.cos.COSDictionary properties,private final non-sealed java.lang.String tag