code: @Override
      @SuppressWarnings("PMD.NPathComplexity")
      public int compare(final GetString arg0, final GetString arg1) {
          if (arg0 == null && arg1 == null) {
              return 0;
          }
          if (arg0 == null) {
              return -1;
          }
          if (arg1 == null) {
              return 1;
          }
  
          final String s1 = arg0.getString();
          final String s2 = arg1.getString();
          if (s1 == null && s2 == null) {
              return 0;
          }
          if (s1 == null) {
              return -1;
          }
          if (s2 == null) {
              return 1;
          }
  
          int thisMarker = 0;
          int thatMarker = 0;
          final int s1Length = s1.length();
          final int s2Length = s2.length();
  
          while (thisMarker < s1Length && thatMarker < s2Length) {
              final String thisChunk = getChunk(s1, s1Length, thisMarker);
              thisMarker += thisChunk.length();
  
              final String thatChunk = getChunk(s2, s2Length, thatMarker);
              thatMarker += thatChunk.length();
  
              final int result = compareChunksOfEitherType(thisChunk, thatChunk);
              if (result != 0) {
                  return result;
              }
          }
  
          return s1Length - s2Length;
      }
docs: {@inheritDoc}