@Override
  public boolean match(MatchNode matchNode, MatchEngine engine) {
    if (matchNode.getType() != MatchNode.MATCHNODE_STATEMENT) {
      return false;
    }

    return matchNode.iterateRules((key, value) -> {
      switch (key) {
        case STATEMENT_TYPE:
          if (this.type != value.value) {
            return false;
          }
          break;
        case STATEMENT_STATSIZE:
          if (this.stats.size() != (Integer)value.value) {
            return false;
          }
          break;
        case STATEMENT_EXPRSIZE:
          int exprsize = (Integer)value.value;
          if (exprsize == -1) {
            if (this.exprents != null) {
              return false;
            }
          }
          else {
            if (this.exprents == null || this.exprents.size() != exprsize) {
              return false;
            }
          }
          break;
        case STATEMENT_RET:
          if (!engine.checkAndSetVariableValue((String)value.value, this)) {
            return false;
          }
          break;
      }

      return true;
    });
  }
Gets the implicitly defined variables in this statement.

@return A list of {@link VarExprent}s that are implicitly defined. Can be null or empty if none exist.
src/org/jetbrains/java/decompiler/modules/decompiler/stats/Statement.java