private static int appendIntersectionTypeSignature(char[] string,int start,boolean fullyQualifyTypeNames,StringBuffer buffer){
  if (start >= string.length - 1) {
    throw new IllegalArgumentException();
  }
  char c=string[start];
  if (c != C_INTERSECTION) {
    throw new IllegalArgumentException();
  }
  start=appendClassTypeSignature(string,start + 1,fullyQualifyTypeNames,buffer);
  if (start < string.length - 1) {
    start++;
    if (string[start] != C_COLON) {
      throw new IllegalArgumentException("should be a colon at this location");
    }
    while (string[start] == C_COLON) {
      buffer.append(" | ");
      start=appendClassTypeSignature(string,start + 1,fullyQualifyTypeNames,buffer);
      if (start == string.length - 1) {
        return start;
      }
 else       if (start > string.length - 1) {
        throw new IllegalArgumentException("Should be at the end");
      }
      start++;
    }
  }
  return start;
}

private static int appendIntersectionTypeSignature ( char [ ] string , int start , boolean fullyQualifyTypeNames , StringBuffer buffer ) { if ( start >= string . length - 1 ) { throw new IllegalArgumentException ( ) ; } char c = string [ start ] ; if ( c != C_INTERSECTION ) { throw new IllegalArgumentException ( ) ; } start = appendClassTypeSignature ( string , start + 1 , fullyQualifyTypeNames , buffer ) ; if ( start < string . length - 1 ) { start ++ ; if ( string [ start ] != C_COLON ) { throw new IllegalArgumentException ( "should be a colon at this location" ) ; } while ( string [ start ] == C_COLON ) { buffer . append ( " | " ) ; start = appendClassTypeSignature ( string , start + 1 , fullyQualifyTypeNames , buffer ) ; if ( start == string . length - 1 ) { return start ; } else if ( start > string . length - 1 ) { throw new IllegalArgumentException ( "Should be at the end" ) ; } start ++ ; } } return start ; }
scans the given string for an intersection type signature starting at the given index and appends it to the given buffer , and returns the index of the last character .
