private void copyCharactersTillPotentialReference() {
      if (nextPotentialReferencePosition != currentPosition) {
         int skipUntilIndex = nextPotentialReferencePosition != -1 ?
               nextPotentialReferencePosition : originalMessage.length();
         if (skipUntilIndex - currentPosition > 3) {
            decodedMessage.append(originalMessage.substring(currentPosition, skipUntilIndex));
            currentPosition = skipUntilIndex;
         }
         else {
            while (currentPosition < skipUntilIndex)
               decodedMessage.append(originalMessage.charAt(currentPosition++));
         }
      }
   }