code: protected static final Map<String, ArrayList<String>> parseUserData(String userData) {
          int tokenLen = userData.length();
          int numOfAttribs = 1; // default has "user" (u) attribute
          int lastDelim = 0;
          int i = 0;
          Map<String, ArrayList<String>> attribs = new HashMap<String, ArrayList<String>>();
  
          for (i = 0; i < tokenLen; i++) {
              if ((userData.charAt(i) == USER_DATA_DELIM) && (userData.charAt(i - 1) != '\\')) {
                  numOfAttribs++;
                  String data = userData.substring(lastDelim, i);
                  lastDelim = i + 1;
                  addAttributes(data, attribs);
              }
          }
  
          // add the last element
          String data = userData.substring(lastDelim, tokenLen);
          addAttributes(data, attribs);
  
          return attribs;
      }
docs: Parse the String form of a UserData and get a Map of the UserData.
  
  @param userData The String form of a UserData
  @return A Map of the UserData