### Question:
SignatureUtils { public static MethodSignature3 makeMethodSignature(Class<?> clazz, Method method) { org.aspectj.lang.reflect.MethodSignature aspectjSignature = (org.aspectj.lang.reflect.MethodSignature) makeSignature(clazz, method); if (aspectjSignature == null) { return null; } MethodLocation3 methodLocation = makeMethodLocation(aspectjSignature, makeLocation(clazz)); return MethodSignature3.builder() .aspectjString(stripModifiersAndReturnType(methodLocation.getSignature())) .bridge(method.isBridge()) .declaringType(aspectjSignature.getDeclaringTypeName()) .exceptionTypes(classArrayToString(aspectjSignature.getExceptionTypes())) .methodName(aspectjSignature.getName()) .modifiers(Modifier.toString(aspectjSignature.getModifiers())) .packageName(aspectjSignature.getDeclaringType().getPackage().getName()) .parameterTypes(classArrayToString(aspectjSignature.getParameterTypes())) .returnType(aspectjSignature.getReturnType().getName()) .synthetic(method.isSynthetic()) .location(methodLocation.getLocation()) .build(); }  static String normalizeSignature(MethodSignature3 methodSignature); static String normalizeSignature(String signature); static MethodLocation3 makeMethodLocation(Signature signature, String location); static String signatureToString(Signature signature); static String stripModifiers(String signature); static String getVisibility(String modifiers); static Signature makeSignature(Class<?> clazz, Method method); static MethodSignature3 makeMethodSignature(Class<?> clazz, Method method); static MethodSignature3 makeConstructorSignature(
      Class<?> clazz, Constructor<?> constructor); static final String PUBLIC; static final String PROTECTED; static final String PACKAGE_PRIVATE; static final String PRIVATE; }### Answer:
@SuppressWarnings("Duplicates") @Test public void should_make_signature_for_protectedMethod2() throws Exception { MethodSignature3 signature = makeMethodSignature(TestClass.class, findTestMethod("protectedMethod2")); assertThat(signature, notNullValue()); assertThat( signature.getAspectjString(), is( "protected io.codekvast.javaagent.util.SignatureUtilsTest.TestClass.protectedMethod2()")); assertThat( signature.getDeclaringType(), is("io.codekvast.javaagent.util.SignatureUtilsTest$TestClass")); assertThat(signature.getExceptionTypes(), is("")); assertThat(signature.getMethodName(), is("protectedMethod2")); assertThat(signature.getModifiers(), is("protected")); assertThat(signature.getPackageName(), is("io.codekvast.javaagent.util")); assertThat(signature.getParameterTypes(), is("")); assertThat(signature.getReturnType(), is("java.lang.Integer")); assertThat(signature.getLocation(), matchesPattern(LOCATION_PATTERN)); }
@SuppressWarnings("Duplicates") @Test public void should_make_signature_for_protectedMethod5() throws Exception { MethodSignature3 signature = makeMethodSignature(TestClass.class, findTestMethod("protectedMethod5")); assertThat(signature, notNullValue()); assertThat( signature.getAspectjString(), is( "protected io.codekvast.javaagent.util.SignatureUtilsTest.TestClass.protectedMethod5(java.lang.String, io" + ".codekvast" + ".javaagent.util.SignatureUtilsTest.TestInterface)")); assertThat( signature.getDeclaringType(), is("io.codekvast.javaagent.util.SignatureUtilsTest$TestClass")); assertThat(signature.getExceptionTypes(), is("java.lang.UnsupportedOperationException")); assertThat(signature.getMethodName(), is("protectedMethod5")); assertThat(signature.getModifiers(), is("protected final strictfp")); assertThat(signature.getPackageName(), is("io.codekvast.javaagent.util")); assertThat( signature.getParameterTypes(), is("java.lang.String, io.codekvast.javaagent.util.SignatureUtilsTest$TestInterface")); assertThat(signature.getReturnType(), is("int")); assertThat(signature.getLocation(), matchesPattern(LOCATION_PATTERN)); }