public static SourceSpec fromString(String source, String kind, boolean extend) {
        SourceSpec sourceSpec;
        if (source.contains("/") || source.contains(";")) {
            sourceSpec = fromDescriptorPattern(source, kind);
        } else if (source.startsWith("@")) {
            sourceSpec = fromAnnotation(source, kind);
        } else {
            sourceSpec = fromJavaPattern(source, kind);
        }
        sourceSpec.setExtend(extend);
        return sourceSpec;
    }
This is a parser for custom aop pointcut expression.
<p>
Such as <pre>int android.util.Log.d(java.lang.String,java.lang.String)</pre>
plugin/src/main/groovy/com/didichuxing/tools/droidassist/spec/SourceSpec.java