code: @Override
      public XmlObject getFormObject(ProposalDevelopmentDocumentContract proposalDevelopmentDocument) {
          this.pdDoc = proposalDevelopmentDocument;
          S2sUserAttachedFormFileContract userAttachedFormFile = findUserAttachedFormFile();
          if(userAttachedFormFile==null){
              throw new RuntimeException("Cannot find XML Data");
          }
          String formXml = userAttachedFormFile.getXmlFile();
          XmlObject xmlObject;
          try {
              xmlObject = XmlObject.Factory.parse(formXml);
          }catch (XmlException e) {
              throw new RuntimeException("XmlObject not ready");
          }
          S2sUserAttachedFormContract userAttachedForm = findUserAttachedForm();
          List<? extends S2sUserAttachedFormAttContract> attachments = userAttachedForm.getS2sUserAttachedFormAtts();
          for (S2sUserAttachedFormAttContract s2sUserAttachedFormAtt : attachments) {
              addAttachment(s2sUserAttachedFormAtt);
          }
          return xmlObject;
      }
docs: This method creates {@link XmlObject} of type {@link BudgetNarrativeAttachmentsDocument} by populating data from the given
  {@link ProposalDevelopmentDocumentContract}
  
  @param proposalDevelopmentDocument for which the {@link XmlObject} needs to be created
  @return {@link XmlObject} which is generated using the given {@link ProposalDevelopmentDocumentContract}