class GroovyExpressionMatcher implements Serializable {

    @SuppressWarnings("all")
    public Optional<Issue> createIssue(final Matcher matcher, final IssueBuilder builder, final int lineNumber,
            final String fileName) {
        Object result = run(matcher, builder, lineNumber, fileName);
        if (result instanceof Optional) {
            Optional<?> optional = (Optional) result;
            if (optional.isPresent()) {
                Object wrappedIssue = optional.get();
                if (wrappedIssue instanceof Issue) {
                    return Optional.of((Issue)wrappedIssue);
                }
            }
        }
        return Optional.empty();
    }

      GroovyExpressionMatcher(final String script);

}