class XMPBasicJobTicketSchema extends XMPSchema
{

    @PropertyType(type = Types.Job, card = Cardinality.Bag)
    public static final String JOB_REF = "JobRef";

    private ArrayProperty bagJobs;

    public XMPBasicJobTicketSchema(XMPMetadata metadata)
    {
        this(metadata, null);
    }

    public XMPBasicJobTicketSchema(XMPMetadata metadata, String ownPrefix)
    {
        super(metadata, ownPrefix);
    }

    public void addJob(String id, String name, String url)
    {
        addJob(id, name, url, null);
    }

    public void addJob(String id, String name, String url, String fieldPrefix)
    {<FILL_FUNCTION_BODY>}

    public void addJob(JobType job)
    {
        String prefix = getNamespacePrefix(job.getNamespace());
        if (prefix != null)
        {
            // use same prefix for all jobs
            job.setPrefix(prefix);
        }
        else
        {
            // add prefix
            addNamespace(job.getNamespace(), job.getPrefix());
        }
        // create bag if not existing
        if (bagJobs == null)
        {
            bagJobs = createArrayProperty(JOB_REF, Cardinality.Bag);
            addProperty(bagJobs);
        }
        // add job
        bagJobs.getContainer().addProperty(job);
    }

    public List<JobType> getJobs() throws BadFieldValueException
    {
        List<AbstractField> tmp = getUnqualifiedArrayList(JOB_REF);
        if (tmp != null)
        {
            List<JobType> layers = new ArrayList<>();
            for (AbstractField abstractField : tmp)
            {
                if (abstractField instanceof JobType)
                {
                    layers.add((JobType) abstractField);
                }
                else
                {
                    throw new BadFieldValueException("Job expected and " + abstractField.getClass().getName()
                            + " found.");
                }
            }
            return layers;
        }
        return null;

    }

}

        JobType job = new JobType(getMetadata(), fieldPrefix);
        job.setId(id);
        job.setName(name);
        job.setUrl(url);
        addJob(job);
    
<methods>public void <init>(org.apache.xmpbox.XMPMetadata, java.lang.String, java.lang.String, java.lang.String) ,public void <init>(org.apache.xmpbox.XMPMetadata) ,public void <init>(org.apache.xmpbox.XMPMetadata, java.lang.String) ,public void <init>(org.apache.xmpbox.XMPMetadata, java.lang.String, java.lang.String) ,public void addBagValue(java.lang.String, org.apache.xmpbox.type.AbstractField) ,public void addBagValueAsSimple(java.lang.String, java.lang.String) ,public void addQualifiedBagValue(java.lang.String, java.lang.String) ,public void addSequenceDateValueAsSimple(java.lang.String, java.util.Calendar) ,public void addUnqualifiedSequenceDateValue(java.lang.String, java.util.Calendar) ,public void addUnqualifiedSequenceValue(java.lang.String, java.lang.String) ,public void addUnqualifiedSequenceValue(java.lang.String, org.apache.xmpbox.type.AbstractField) ,public org.apache.xmpbox.type.Attribute getAboutAttribute() ,public java.lang.String getAboutValue() ,public org.apache.xmpbox.type.AbstractField getAbstractProperty(java.lang.String) ,public org.apache.xmpbox.type.BooleanType getBooleanProperty(java.lang.String) throws org.apache.xmpbox.type.BadFieldValueException,public java.lang.Boolean getBooleanPropertyValue(java.lang.String) throws org.apache.xmpbox.type.BadFieldValueException,public java.lang.Boolean getBooleanPropertyValueAsSimple(java.lang.String) throws org.apache.xmpbox.type.BadFieldValueException,public org.apache.xmpbox.type.DateType getDateProperty(java.lang.String) throws org.apache.xmpbox.type.BadFieldValueException,public java.util.Calendar getDatePropertyValue(java.lang.String) throws org.apache.xmpbox.type.BadFieldValueException,public java.util.Calendar getDatePropertyValueAsSimple(java.lang.String) throws org.apache.xmpbox.type.BadFieldValueException,public org.apache.xmpbox.type.IntegerType getIntegerProperty(java.lang.String) throws org.apache.xmpbox.type.BadFieldValueException,public java.lang.Integer getIntegerPropertyValue(java.lang.String) throws org.apache.xmpbox.type.BadFieldValueException,public java.lang.Integer getIntegerPropertyValueAsSimple(java.lang.String) throws org.apache.xmpbox.type.BadFieldValueException,public List<org.apache.xmpbox.type.AbstractField> getUnqualifiedArrayList(java.lang.String) throws org.apache.xmpbox.type.BadFieldValueException,public List<java.lang.String> getUnqualifiedBagValueList(java.lang.String) ,public List<java.lang.String> getUnqualifiedLanguagePropertyLanguagesValue(java.lang.String) throws org.apache.xmpbox.type.BadFieldValueException,public java.lang.String getUnqualifiedLanguagePropertyValue(java.lang.String, java.lang.String) throws org.apache.xmpbox.type.BadFieldValueException,public List<java.util.Calendar> getUnqualifiedSequenceDateValueList(java.lang.String) ,public List<java.lang.String> getUnqualifiedSequenceValueList(java.lang.String) ,public org.apache.xmpbox.type.TextType getUnqualifiedTextProperty(java.lang.String) throws org.apache.xmpbox.type.BadFieldValueException,public java.lang.String getUnqualifiedTextPropertyValue(java.lang.String) throws org.apache.xmpbox.type.BadFieldValueException,public void merge(org.apache.xmpbox.schema.XMPSchema) throws java.io.IOException,public void removeUnqualifiedArrayValue(java.lang.String, org.apache.xmpbox.type.AbstractField) ,public void removeUnqualifiedBagValue(java.lang.String, java.lang.String) ,public void removeUnqualifiedSequenceDateValue(java.lang.String, java.util.Calendar) ,public void removeUnqualifiedSequenceValue(java.lang.String, java.lang.String) ,public void removeUnqualifiedSequenceValue(java.lang.String, org.apache.xmpbox.type.AbstractField) ,public void reorganizeAltOrder(org.apache.xmpbox.type.ComplexPropertyContainer) ,public void setAbout(org.apache.xmpbox.type.Attribute) throws org.apache.xmpbox.type.BadFieldValueException,public void setAboutAsSimple(java.lang.String) ,public void setBooleanProperty(org.apache.xmpbox.type.BooleanType) ,public void setBooleanPropertyValue(java.lang.String, java.lang.Boolean) ,public void setBooleanPropertyValueAsSimple(java.lang.String, java.lang.Boolean) ,public void setDateProperty(org.apache.xmpbox.type.DateType) ,public void setDatePropertyValue(java.lang.String, java.util.Calendar) ,public void setDatePropertyValueAsSimple(java.lang.String, java.util.Calendar) ,public void setIntegerProperty(org.apache.xmpbox.type.IntegerType) ,public void setIntegerPropertyValue(java.lang.String, java.lang.Integer) ,public void setIntegerPropertyValueAsSimple(java.lang.String, java.lang.Integer) ,public void setTextProperty(org.apache.xmpbox.type.TextType) ,public void setTextPropertyValue(java.lang.String, java.lang.String) ,public void setTextPropertyValueAsSimple(java.lang.String, java.lang.String) ,public void setUnqualifiedLanguagePropertyValue(java.lang.String, java.lang.String, java.lang.String) <variables>