private static SourceSpec fromJavaPattern(String source, String kind) {
        Kind kd = Kind.valueOf(kind);
        if (kd == Kind.METHOD) {
            checkMethodSource(source);
            return methodFromString(source);
        }
        if (kd == Kind.CONSTRUCTOR) {
            checkConstructorSource(source);
            return constructorFromString(source);
        }
        if (kd == Kind.FIELD) {
            checkFieldSource(source);
            return fieldFromString(source);
        }
        if (kd == Kind.INITIALIZER) {
            checkInitializerSource(source);
            return initializerFromString(source);
        }
        throw new DroidAssistBadTypeException("Bad type :" + source);
    }
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