class FDFAnnotationInk extends FDFAnnotation
{
    private static final Logger LOG = LogManager.getLogger(FDFAnnotationInk.class);
    /**
     * COS Model value for SubType entry.
     */
    public static final String SUBTYPE = "Ink";

    /**
     * Default constructor.
     */
    public FDFAnnotationInk()
    {
        super();
        annot.setName(COSName.SUBTYPE, SUBTYPE);
    }

    /**
     * Constructor.
     *
     * @param a An existing FDF Annotation.
     */
    public FDFAnnotationInk(COSDictionary a)
    {
        super(a);
    }

    /**
     * Constructor.
     *
     * @param element An XFDF element.
     *
     * @throws IOException If there is an error extracting information from the element.
     */
    public FDFAnnotationInk(Element element) throws IOException
    {
        super(element);
        annot.setName(COSName.SUBTYPE, SUBTYPE);

        XPath xpath = XPathFactory.newInstance().newXPath();
        try
        {
            NodeList gestures = (NodeList) xpath.evaluate("inklist/gesture", element,
                    XPathConstants.NODESET);
            if (gestures.getLength() == 0)
            {
                throw new IOException("Error: missing element 'gesture'");
            }
            List<float[]> inklist = new ArrayList<>();
            for (int i = 0; i < gestures.getLength(); i++)
            {
                Node node = gestures.item(i);
                if (node instanceof Element)
                {
                    String gesture = node.getFirstChild().getNodeValue();
                    String[] gestureValues = gesture.split(",|;");
                    float[] values = new float[gestureValues.length];
                    for (int j = 0; j < gestureValues.length; j++)
                    {
                        values[j] = Float.parseFloat(gestureValues[j]);
                    }
                    inklist.add(values);
                }
            }
            setInkList(inklist);
        }
        catch (XPathExpressionException e)
        {
            LOG.debug("Error while evaluating XPath expression for inklist gestures", e);
        }
    }

    /**
     * Set the paths making up the freehand "scribble".
     * 
     * The ink annotation is made up of one ore more disjoint paths. Each array entry is an array representing a stroked
     * path, being a series of alternating horizontal and vertical coordinates in default user space.
     * 
     * @param inklist the List of arrays representing the paths.
     */
    public final void setInkList(List<float[]> inklist)
    {<FILL_FUNCTION_BODY>}

    /**
     * Get the paths making up the freehand "scribble".
     *
     * @see #setInkList(List)
     * @return the List of arrays representing the paths.
     */
    public List<float[]> getInkList()
    {
        COSArray array = annot.getCOSArray(COSName.INKLIST);
        if (array != null)
        {
            List<float[]> retval = new ArrayList<>();
            for (COSBase entry : array)
            {
                retval.add(((COSArray) entry).toFloatArray());
            }
            return retval;
        }
        else
        {
            return null; // Should never happen as this is a required item
        }
    }
}

        COSArray newInklist = new COSArray();
        for (float[] array : inklist)
        {
            newInklist.add(COSArray.of(array));
        }
        annot.setItem(COSName.INKLIST, newInklist);
    
<methods>public void <init>() ,public void <init>(org.apache.pdfbox.cos.COSDictionary) ,public void <init>(org.w3c.dom.Element) throws java.io.IOException,public static org.apache.pdfbox.pdmodel.fdf.FDFAnnotation create(org.apache.pdfbox.cos.COSDictionary) ,public org.apache.pdfbox.pdmodel.interactive.annotation.PDBorderEffectDictionary getBorderEffect() ,public org.apache.pdfbox.pdmodel.interactive.annotation.PDBorderStyleDictionary getBorderStyle() ,public org.apache.pdfbox.cos.COSDictionary getCOSObject() ,public java.awt.Color getColor() ,public java.lang.String getContents() ,public java.util.Calendar getCreationDate() throws java.io.IOException,public java.lang.String getDate() ,public java.lang.String getIntent() ,public java.lang.String getName() ,public float getOpacity() ,public java.lang.Integer getPage() ,public org.apache.pdfbox.pdmodel.common.PDRectangle getRectangle() ,public java.lang.String getRichContents() ,public java.lang.String getSubject() ,public java.lang.String getTitle() ,public boolean isHidden() ,public boolean isInvisible() ,public boolean isLocked() ,public boolean isLockedContents() ,public boolean isNoRotate() ,public boolean isNoView() ,public boolean isNoZoom() ,public boolean isPrinted() ,public boolean isReadOnly() ,public boolean isToggleNoView() ,public final void setBorderEffect(org.apache.pdfbox.pdmodel.interactive.annotation.PDBorderEffectDictionary) ,public final void setBorderStyle(org.apache.pdfbox.pdmodel.interactive.annotation.PDBorderStyleDictionary) ,public final void setColor(java.awt.Color) ,public final void setContents(java.lang.String) ,public final void setCreationDate(java.util.Calendar) ,public final void setDate(java.lang.String) ,public final void setHidden(boolean) ,public final void setIntent(java.lang.String) ,public final void setInvisible(boolean) ,public final void setLocked(boolean) ,public void setLockedContents(boolean) ,public final void setName(java.lang.String) ,public final void setNoRotate(boolean) ,public final void setNoView(boolean) ,public final void setNoZoom(boolean) ,public final void setOpacity(float) ,public final void setPage(int) ,public final void setPrinted(boolean) ,public final void setReadOnly(boolean) ,public final void setRectangle(org.apache.pdfbox.pdmodel.common.PDRectangle) ,public final void setRichContents(java.lang.String) ,public final void setSubject(java.lang.String) ,public final void setTitle(java.lang.String) ,public final void setToggleNoView(boolean) <variables>private static final int FLAG_HIDDEN,private static final int FLAG_INVISIBLE,private static final int FLAG_LOCKED,private static final int FLAG_LOCKED_CONTENTS,private static final int FLAG_NO_ROTATE,private static final int FLAG_NO_VIEW,private static final int FLAG_NO_ZOOM,private static final int FLAG_PRINTED,private static final int FLAG_READ_ONLY,private static final int FLAG_TOGGLE_NO_VIEW,private static final Logger LOG,protected final non-sealed org.apache.pdfbox.cos.COSDictionary annot