docs: final static int compressSpaces(List<Instruction> instructionBuffer, int size)
      {
          boolean addleftspace = true;
          boolean addrightspace = false;
          boolean skipnext = false;
          for (int i = 0; i < size; i++)
          {
              String text = null;
              String newText = null;
              int instructionType = 0;
              if (skipnext)
              {
                  skipnext = false;
                  continue;
              }
              Instruction ins = instructionBuffer.get(i);
              if (i+1 == size)
              {
                  addrightspace = true;
              }
              
              if (ins instanceof LiteralTextInstruction)
              {
                  text = ((LiteralTextInstruction)ins).getText();
                  instructionType = 1;
              }
              else if (ins instanceof LiteralNonExcapedTextInstruction)
              {
                  text = ((LiteralTextInstruction)ins).getText();
                  instructionType = 2;
              }
              else if (ins instanceof LiteralXMLInstruction)
              {
                  skipnext = true;
                  continue;
              }
              
              if (text != null && text.length() > 0)
              {
                  int firstCharLocation = -1;
                  int leftChar = 0; // 0=first char on left 1=\n 2=\r 3=\r\n
                  int lenght = text.length();
                  String leftText = null;
                  for (int j = 0; j < lenght; j++)
                  {
                      char c = text.charAt(j);
                      if (leftChar == 0)
                      {
                          if (c == '\r')
                          {
                              leftChar = 2;
                              if (j+1 < lenght)
                              {
                                  if (text.charAt(j+1) == '\n')
                                  {
                                      leftChar = 3;
                                  }
                              }
                          }
                          if (c == '\n')
                          {
                              leftChar = 1;
                          }
                      }
                      if (Character.isWhitespace(c))
                      {
                          continue;
                      }
                      else
                      {
                          firstCharLocation = j;
                          break;
                      }
                  }
                  if (firstCharLocation == -1)
                  {
                      firstCharLocation = lenght;
                  }
                  // Define the character on the left
                  if (firstCharLocation > 0)
                  {
                      switch (leftChar)
                      {
                          case 1:
                              leftText = "\n";
                              break;
                          case 2:
                              leftText = "\r";
                              break;
                          case 3:
                              leftText = "\r\n";
                              break;
                          default:
                              leftText = (lenght > 1) ? text.substring(0,1) : text;
                              break;
                      }                
                  }
                  else
                  {
                      leftText = "";
                  }
                  
                  if (firstCharLocation == lenght && lenght > 1)
                  {
                      // All the instruction is space, replace with an instruction 
                      // with only one space
                      if (addleftspace || addrightspace)
                      {
                          newText = leftText;
                      }
                      else
                      {
                          instructionBuffer.remove(i);
                          i--;
                          size--;
                      }
                  }
                  else
                  {
                      int lastCharLocation = getLastTextCharLocationIgnoringSpacesTabsAndCarriageReturn(text);
                      // If right space, increment in 1
                      if (lastCharLocation+1 < text.length())
                      {
                          lastCharLocation = lastCharLocation+1;
                      }
                      if (firstCharLocation > 0)
                      {
                          newText = leftText+
                              text.substring(firstCharLocation, lastCharLocation+1);
                      }
                      else
                      {
                          newText = text.substring(firstCharLocation, lastCharLocation+1);
                      }
                  }
                  
                  if (newText != null)
                  {
                      if (instructionType == 1)
                      {
                          instructionBuffer.set(i, new LiteralTextInstruction(newText));
                      }
                      else if (instructionType == 2)
                      {
                          instructionBuffer.set(i, new LiteralNonExcapedTextInstruction(newText));
                      }
                  }
              }
              addleftspace = false;
          }
          return size;
      }