private static String parseBracketedNumber(String recipient) throws RecipientFormattingException {
    int begin = recipient.indexOf('<');
    int end = recipient.indexOf('>', begin);
    String value = recipient.substring(begin + 1, end);

    if (NumberUtil.isValidSmsOrEmail(value)) return value;
    else throw new RecipientFormattingException("Bracketed value: " + value + " is not valid.");
  }
  private static Recipient parseRecipient(Context context, String recipient, boolean asynchronous)
      throws RecipientFormattingException {
    recipient = recipient.trim();

    if (recipient.length() == 0) return null;

    if (hasBracketedNumber(recipient))
      return getRecipientForNumber(context, parseBracketedNumber(recipient), asynchronous);

    if (NumberUtil.isValidSmsOrEmail(recipient))
      return getRecipientForNumber(context, recipient, asynchronous);

    throw new RecipientFormattingException("Recipient: " + recipient + " is badly formatted.");
  }