- StringBuilder sb = new StringBuilder(ExtensionEffectiveStatementImpl.class.getSimpleName());
- sb.append("[");
- sb.append("argument=").append(argument);
- sb.append(", qname=").append(qname);
- sb.append(", schemaPath=").append(schemaPath);
- sb.append(", extensionSchemaNodes=").append(unknownNodes);
- sb.append(", yin=").append(yin);
- sb.append("]");
- return sb.toString();
+ if (TOSTRING_DETECTOR.check(this)) {
+ return recursedToString();
+ }
+
+ TOSTRING_DETECTOR.push(this);
+ try {
+ StringBuilder sb = new StringBuilder(ExtensionEffectiveStatementImpl.class.getSimpleName());
+ sb.append("[");
+ sb.append("argument=").append(argument);
+ sb.append(", qname=").append(qname);
+ sb.append(", schemaPath=").append(schemaPath);
+ sb.append(", extensionSchemaNodes=").append(unknownNodes);
+ sb.append(", yin=").append(yin);
+ sb.append("]");
+ return sb.toString();
+ } finally {
+ TOSTRING_DETECTOR.pop();
+ }
+ }
+
+ private String recursedToString() {
+ return ExtensionEffectiveStatementImpl.class.getSimpleName() + "[" +
+ "argument=" + argument +
+ ", qname=" + qname +
+ ", schemaPath=" + schemaPath +
+ ", yin=" + yin +
+ " <RECURSIVE> ]";