org_eclipse_lemminx_extensions_contentmodel_XMLValidationPoolCacheTest_java
org.apache.xerces.impl.dtd.DTDGrammar
public String getContentSpecAsString(int n) {
        if (n < 0 || n >= this.fElementDeclCount) {
            return null;
        }
        int n2 = n >> 8;
        int n3 = n & 0xFF;
        int n4 = this.fElementDeclContentSpecIndex[n2][n3];
        XMLContentSpec xMLContentSpec = new XMLContentSpec();
        if (this.getContentSpec(n4, xMLContentSpec)) {
            StringBuffer stringBuffer = new StringBuffer();
            int n5 = xMLContentSpec.type & 0xF;
            switch (n5) {
                case 0: {
                    stringBuffer.append('(');
                    if (xMLContentSpec.value == null && xMLContentSpec.otherValue == null) {
                        stringBuffer.append("#PCDATA");
                    } else {
                        stringBuffer.append(xMLContentSpec.value);
                    }
                    stringBuffer.append(')');
                    break;
                }
                case 1: {
                    this.getContentSpec(((int[])xMLContentSpec.value)[0], xMLContentSpec);
                    short s = xMLContentSpec.type;
                    if (s == 0) {
                        stringBuffer.append('(');
                        stringBuffer.append(xMLContentSpec.value);
                        stringBuffer.append(')');
                    } else if (s == 3 || s == 2 || s == 1) {
                        stringBuffer.append('(');
                        this.appendContentSpec(xMLContentSpec, stringBuffer, true, n5);
                        stringBuffer.append(')');
                    } else {
                        this.appendContentSpec(xMLContentSpec, stringBuffer, true, n5);
                    }
                    stringBuffer.append('?');
                    break;
                }
                case 2: {
                    this.getContentSpec(((int[])xMLContentSpec.value)[0], xMLContentSpec);
                    short s = xMLContentSpec.type;
                    if (s == 0) {
                        stringBuffer.append('(');
                        if (xMLContentSpec.value == null && xMLContentSpec.otherValue == null) {
                            stringBuffer.append("#PCDATA");
                        } else if (xMLContentSpec.otherValue != null) {
                            stringBuffer.append("##any:uri=").append(xMLContentSpec.otherValue);
                        } else if (xMLContentSpec.value == null) {
                            stringBuffer.append("##any");
                        } else {
                            this.appendContentSpec(xMLContentSpec, stringBuffer, true, n5);
                        }
                        stringBuffer.append(')');
                    } else if (s == 3 || s == 2 || s == 1) {
                        stringBuffer.append('(');
                        this.appendContentSpec(xMLContentSpec, stringBuffer, true, n5);
                        stringBuffer.append(')');
                    } else {
                        this.appendContentSpec(xMLContentSpec, stringBuffer, true, n5);
                    }
                    stringBuffer.append('*');
                    break;
                }
                case 3: {
                    this.getContentSpec(((int[])xMLContentSpec.value)[0], xMLContentSpec);
                    short s = xMLContentSpec.type;
                    if (s == 0) {
                        stringBuffer.append('(');
                        if (xMLContentSpec.value == null && xMLContentSpec.otherValue == null) {
                            stringBuffer.append("#PCDATA");
                        } else if (xMLContentSpec.otherValue != null) {
                            stringBuffer.append("##any:uri=").append(xMLContentSpec.otherValue);
                        } else if (xMLContentSpec.value == null) {
                            stringBuffer.append("##any");
                        } else {
                            stringBuffer.append(xMLContentSpec.value);
                        }
                        stringBuffer.append(')');
                    } else if (s == 3 || s == 2 || s == 1) {
                        stringBuffer.append('(');
                        this.appendContentSpec(xMLContentSpec, stringBuffer, true, n5);
                        stringBuffer.append(')');
                    } else {
                        this.appendContentSpec(xMLContentSpec, stringBuffer, true, n5);
                    }
                    stringBuffer.append('+');
                    break;
                }
                case 4: 
                case 5: {
                    this.appendContentSpec(xMLContentSpec, stringBuffer, true, n5);
                    break;
                }
                case 6: {
                    stringBuffer.append("##any");
                    if (xMLContentSpec.otherValue == null) break;
                    stringBuffer.append(":uri=");
                    stringBuffer.append(xMLContentSpec.otherValue);
                    break;
                }
                case 7: {
                    stringBuffer.append("##other:uri=");
                    stringBuffer.append(xMLContentSpec.otherValue);
                    break;
                }
                case 8: {
                    stringBuffer.append("##local");
                    break;
                }
                default: {
                    stringBuffer.append("???");
                }
            }
            return stringBuffer.toString();
        }
        return null;
    }
 -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.StringBuffer.append(java.lang.Object): java.lang.StringBuffer -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.StringBuffer.append(java.lang.Object): java.lang.StringBuffer -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.StringBuffer.toString(): java.lang.String
 [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.StringBuffer.append(char): java.lang.StringBuffer [CALL] [EXIT] [CALL] -> java.lang.StringBuffer.append(java.lang.Object): java.lang.StringBuffer [EXIT] -> java.lang.StringBuffer.append(char): java.lang.StringBuffer [CALL] [EXIT] [CALL] -> java.lang.StringBuffer.append(java.lang.Object): java.lang.StringBuffer [EXIT] -> java.lang.StringBuffer.append(char): java.lang.StringBuffer [EXIT] -> java.lang.StringBuffer.toString(): java.lang.String [EXIT]