code: function _getLineSegmentMarkup(attributeString, operationTranslator, textIterator) {
     if (attributeString.length <= 0) {
         return {
             withMarkup: "",
             plainText:  ""
         };
     } else {
         var lineSegmentWithMarkup = "";
         var lineSegmentWithoutMarkup = "";
  
         operationTranslator.reset();
  
         var opIterator = Changeset.opIterator(attributeString);
  
         // begin iteration over spans (=operations) in line segment
         while (opIterator.hasNext()) {
             var currentOp = opIterator.next();
             var opMarkup = operationTranslator.getMarkup(currentOp, textIterator);
             lineSegmentWithMarkup += opMarkup.withMarkup;
             lineSegmentWithoutMarkup += opMarkup.plainText;
         } // end iteration over spans in line segment
  
         return {
             withMarkup: lineSegmentWithMarkup + operationTranslator.getEndTagsAfterLastOp(),
             plainText:  lineSegmentWithoutMarkup
         };
     }
  }
docs: /*
  @param attributeString an epl attribute string
  @param operationHandler object that turns attributes to xml
  @param textIterator that has to be in sync with the attributeString
  Returns both, text with markup and plain text as literal object
  { withMarkup: ..., plainText: ... }