docs: static Shortcode parseStart(final String str) throws ParseException {
        String exp = str.trim();
  
        if(exp.length() < 3) {
           throw new ParseException(String.format("Invalid shortcode ('%s')", str), 0);
        }
  
        if(exp.charAt(0) != '[') {
           throw new ParseException("Expecting '['", 0);
        }
  
        if(exp.charAt(exp.length() - 1) != ']') {
           throw new ParseException("Expecting ']'", exp.length() - 1);
        }
  
        exp = exp.substring(1, exp.length() - 1).trim();
  
        if(exp.length() == 0) {
           throw new ParseException(String.format("Invalid shortcode ('%s')", str), 0);
        }
  
        int attrStart = exp.indexOf(' ');
        if(attrStart < 0) {
           return new Shortcode(validateName(exp), ImmutableMap.of());
        } else {
           return new Shortcode(validateName(exp.substring(0, attrStart)), parseAttributes(exp.substring(attrStart).trim()));
        }
     }