code: protected int findSeparator() {
          int first;
          int match = 0;
          int maxpos = tail - boundaryLength;
          for (first = head;
               (first <= maxpos) && (match != boundaryLength);
               first++) {
              first = findByte(boundary[0], first);
              if (first == -1 || (first > maxpos)) {
                  return -1;
              }
              for (match = 1; match < boundaryLength; match++) {
                  if (buffer[first + match] != boundary[match]) {
                      break;
                  }
              }
          }
          if (match == boundaryLength) {
              return first - 1;
          }
          return -1;
      }
docs: Searches for the <code>boundary</code> in the <code>buffer</code>
  region delimited by <code>head</code> and <code>tail</code>.
  
  @return The position of the boundary found, counting from the
  beginning of the <code>buffer</code>, or <code>-1</code> if
  not found.