{"record":{"id":"01e4e46be7f98b28","repo":"stanfordnlp/CoreNLP","slug":"backrefpatternexpr-transform-not-implemented-yet","errorCode":null,"errorMessage":"BackRefPatternExpr.transform not implemented yet!!! Please implement me!!!","messagePattern":"BackRefPatternExpr\\.transform not implemented yet!!! Please implement me!!!","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"src/edu/stanford/nlp/ling/tokensregex/SequencePattern.java","lineNumber":583,"sourceCode":"    }\n\n    @Override\n    protected int assignGroupIds(int start) {\n      return start;\n    }\n    @Override\n    protected void updateBindings(VarGroupBindings bindings) {}\n\n    @Override\n    protected PatternExpr copy()\n    {\n      return new BackRefPatternExpr(matcher, captureGroupId);\n    }\n\n    @Override\n    protected PatternExpr transform(NodePatternTransformer transformer) {\n      // TODO: Implement me!!!\n      throw new UnsupportedOperationException(\"BackRefPatternExpr.transform not implemented yet!!! Please implement me!!!\");\n    }\n\n    public String toString() {\n      StringBuilder sb = new StringBuilder();\n      if (captureGroupId >= 0) {\n        sb.append('\\\\').append(captureGroupId);\n      } else {\n        sb.append('\\\\');\n      }\n      sb.append('{').append(matcher).append('}');\n      return sb.toString();\n    }\n  }\n\n  public static class ValuePatternExpr extends PatternExpr {\n\n    private final PatternExpr expr;\n    private final Object value;","sourceCodeStart":565,"sourceCodeEnd":601,"githubUrl":"https://github.com/stanfordnlp/CoreNLP/blob/1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a/src/edu/stanford/nlp/ling/tokensregex/SequencePattern.java#L565-L601","documentation":"BackRefPatternExpr.transform() is an explicitly unfinished feature: applying a NodePatternTransformer to a back-reference expression throws UnsupportedOperationException with the 'Please implement me!!!' message. Back-references depend on capture group ids that a transformer cannot currently remap, so it is deliberately unimplemented.","triggerScenarios":"Calling transform() on a pattern whose expression tree contains a BackRefPatternExpr, i.e. any pattern using \\N back references (e.g. TokensRegex '[ { word: /a/ } ] \\1').","commonSituations":"Pattern rewriting/normalization pipelines that traverse all pattern expressions and hit back-reference nodes; common when transforming rule sets or converting node pattern types.","solutions":["Avoid transform() on patterns containing back references; reconstruct the transformed pattern manually","Split the pattern: transform sub-patterns without back refs and keep back-ref nodes as-is","Implement the override: return new BackRefPatternExpr(transformed matcher, captureGroupId) once transformer supports NodesMatchChecker","Recompile the whole pattern from a rewritten string instead of using transform()"],"exampleFix":"// before\nPatternExpr t = backRefExpr.transform(transformer); // throws\n// after\nPatternExpr t = new BackRefPatternExpr(matcher, backRefExpr.captureGroupId); // rebuild unchanged","handlingStrategy":"try-catch","validationCode":"// detect back-ref nodes before transforming\nboolean hasBackRef = patternContainsBackRef(pattern); // walk patternExpr tree checking for BackRefPatternExpr\nif (hasBackRef) throw new IllegalArgumentException(\"Cannot transform patterns with back references\");","typeGuard":null,"tryCatchPattern":"try {\n  PatternExpr t = expr.transform(transformer);\n} catch (UnsupportedOperationException e) {\n  if (e.getMessage().contains(\"BackRefPatternExpr\")) {\n    // keep original expr or rebuild manually\n  }\n}","preventionTips":["Skip or special-case BackRefPatternExpr nodes in transformer pipelines","Detect back references (\\N) in pattern strings before transforming","Recompile transformed patterns from strings rather than calling transform() on back-ref-containing trees"],"tags":["java","unsupported-operation","not-implemented","tokensregex"],"backgroundTag":"method-not-implemented","analyzedSha":"1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a","analyzedAt":"2026-09-10T02:24:07.274Z","contentChangedAt":"2026-09-10T02:24:07.274Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}