/**
  * @param document
  * @param offset
  * @return
  */
 private String computePrefix(EmbeddedDocument document, int offset) {
   final TextPosition textPosition = document.getPositionFromIndex(offset);
   final String line = document.getLineContent(textPosition.getLine());
   final LinearRange lineRange = document.getLinearRangeForLine(textPosition.getLine());
   String partLine = line.substring(0, offset - lineRange.getStartOffset());
   for (int i = partLine.length() - 1; i >= 0; i--) {
     switch (partLine.charAt(i)) {
       case '.':
         break;
       case ' ':
       case '(':
       case ')':
       case '{':
       case '}':
       case ';':
       case '[':
       case ']':
       case '"':
       case '\'':
         return partLine.substring(i + 1);
       default:
         break;
     }
   }
   return partLine;
 }
 /**
  * @param document
  * @param offset
  * @return
  */
 private String computeTemplatePrefix(EmbeddedDocument document, int offset) {
   final TextPosition textPosition = document.getPositionFromIndex(offset);
   final String line = document.getLineContent(textPosition.getLine());
   final LinearRange lineRange = document.getLinearRangeForLine(textPosition.getLine());
   return line.substring(0, offset - lineRange.getStartOffset());
 }