parameters: (start_token, token_types, end_types, distance=None,
                  reverse=False)
return_statement: return CustomSearch(start_token, lambda token: token.IsAnyType(token_types),
                        lambda token: token.IsAnyType(end_types),
                        distance, reverse)
docstring: Returns the first token of type in token_types before a token of end_type.
  
    Args:
      start_token: The token to start searching from.
      token_types: The allowable types of the token being searched for.
      end_types: Types of tokens to abort search if we find.
      distance: The number of tokens to look through before failing search.  Must
          be positive.  If unspecified, will search until the end of the token
          chain
      reverse: When true, search the tokens before this one instead of the tokens
          after it
  
    Returns:
      The first token of any type in token_types within distance of this token
      before any tokens of type in end_type, or None if no such token is found.
docstring_summary: Returns the first token of type in token_types before a token of end_type.
docstring_tokens: Returns the first token of type in token_types before a token of end_type .
function: def SearchUntil(start_token, token_types, end_types, distance=None,
                  reverse=False):
    """Returns the first token of type in token_types before a token of end_type.
  
    Args:
      start_token: The token to start searching from.
      token_types: The allowable types of the token being searched for.
      end_types: Types of tokens to abort search if we find.
      distance: The number of tokens to look through before failing search.  Must
          be positive.  If unspecified, will search until the end of the token
          chain
      reverse: When true, search the tokens before this one instead of the tokens
          after it
  
    Returns:
      The first token of any type in token_types within distance of this token
      before any tokens of type in end_type, or None if no such token is found.
    """
    return CustomSearch(start_token, lambda token: token.IsAnyType(token_types),
                        lambda token: token.IsAnyType(end_types),
                        distance, reverse)
function_tokens: def SearchUntil ( start_token , token_types , end_types , distance = None , reverse = False ) : return CustomSearch ( start_token , lambda token : token . IsAnyType ( token_types ) , lambda token : token . IsAnyType ( end_types ) , distance , reverse )