code: protected final UtlInvLine<RS, PurchaseInvoice, PurchaseInvoiceLine,
      PurchaseInvoiceTaxLine, PurchaseInvoiceGoodsTaxLine> lazyGetUtlPurGdLn(
        final Map<String, Object> pAddParam) throws Exception {
      UtlInvLine<RS, PurchaseInvoice, PurchaseInvoiceLine,
        PurchaseInvoiceTaxLine, PurchaseInvoiceGoodsTaxLine> utlInvLn = this
          .utlPurInvGdLn;
      if (utlInvLn == null) {
        utlInvLn = new UtlInvLine<RS, PurchaseInvoice, PurchaseInvoiceLine,
          PurchaseInvoiceTaxLine, PurchaseInvoiceGoodsTaxLine>();
        utlInvLn.setUtlInvBase(lazyGetUtlInvBase(pAddParam));
        utlInvLn.setInvTxMeth(lazyGetPurInvTxMeth(pAddParam));
        utlInvLn.setIsMutable(false);
        utlInvLn.setNeedMkTxCat(true);
        utlInvLn.setLtlCl(PurchaseInvoiceGoodsTaxLine.class);
        utlInvLn.setDstTxItLnCl(DestTaxGoodsLn.class);
        FactoryPersistableBase<PurchaseInvoiceGoodsTaxLine> fctLtl =
          new FactoryPersistableBase<PurchaseInvoiceGoodsTaxLine>();
        fctLtl.setObjectClass(PurchaseInvoiceGoodsTaxLine.class);
        fctLtl.setDatabaseId(getSrvDatabase().getIdDatabase());
        utlInvLn.setFctLineTxLn(fctLtl);
        //assigning fully initialized object:
        this.utlPurInvGdLn = utlInvLn;
      }
      return utlInvLn;
    }
docs: <p>Get purchase invoice good line utility.</p>
  @param pAddParam additional param
  @return purchase invoice good line utility
  @throws Exception - an exception