@@ -0,0 +1,2866 @@
+package com.yahoo.abicheck;%0A%0Aimport static org.hamcrest.MatcherAssert.assertThat;%0Aimport static org.hamcrest.Matchers.contains;%0Aimport static org.hamcrest.Matchers.containsInAnyOrder;%0Aimport static org.hamcrest.Matchers.equalTo;%0A%0Aimport com.yahoo.abicheck.collector.PublicSignatureCollector;%0Aimport com.yahoo.abicheck.signature.JavaClassSignature;%0Aimport java.io.IOException;%0Aimport java.util.Map;%0Aimport java.util.function.Function;%0Aimport org.junit.jupiter.api.Test;%0Aimport org.objectweb.asm.ClassReader;%0A%0Apublic class PublicSignatureCollectorTest %7B%0A%0A  @Test%0A  public void testCollection() throws IOException %7B%0A    String testClassName = %22com.yahoo.abicheck.PublicSignatureCollectorTest$TestClass%22;%0A    ClassReader r = new ClassReader(testClassName);%0A    PublicSignatureCollector collector = new PublicSignatureCollector();%0A    r.accept(collector, 0);%0A%0A    Map%3CString, JavaClassSignature%3E signatures = collector.getClassSignatures();%0A    assertThat(signatures.size(), equalTo(1));%0A    JavaClassSignature s = signatures.get(testClassName);%0A    assertThat(s.superClass, equalTo(%22java.lang.Object%22));%0A    assertThat(s.interfaces,%0A        containsInAnyOrder(%22java.lang.Runnable%22, %22java.util.function.Function%22));%0A    assertThat(s.attributes, contains(%22public%22));%0A    assertThat(s.fields, containsInAnyOrder(%0A        %22public static int staticPublicField%22,%0A        %22protected static int staticProtectedField%22,%0A        %22public boolean publicField%22,%0A        %22protected boolean protectedField%22));%0A    assertThat(s.methods, containsInAnyOrder(%0A        %22public void %3Cinit%3E()%22,%0A        %22public static java.lang.String staticPublicMethod()%22,%0A        %22protected static java.lang.String staticProtectedMethod()%22,%0A        %22public java.lang.Object publicMethod()%22,%0A        %22protected java.lang.Object protectedMethod()%22,%0A        %22public void run()%22,%0A        %22public java.lang.Void apply(java.lang.Void)%22,%0A        %22public bridge synthetic java.lang.Object apply(java.lang.Object)%22%0A    ));%0A  %7D%0A%0A  public static class TestClass implements Runnable, Function%3CVoid, Void%3E %7B%0A%0A    public static int staticPublicField = 1;%0A    protected static int staticProtectedField = 2;%0A    private static int staticPrivateField = 3;%0A    public boolean publicField = true;%0A    protected boolean protectedField = true;%0A    private boolean privateField = true;%0A%0A    public static String staticPublicMethod() %7B%0A      return %22%22;%0A    %7D%0A%0A    protected static String staticProtectedMethod() %7B%0A      return %22%22;%0A    %7D%0A%0A    private static String staticPrivateMethod() %7B%0A      return %22%22;%0A    %7D%0A%0A    public Object publicMethod() %7B%0A      return null;%0A    %7D%0A%0A    protected Object protectedMethod() %7B%0A      return null;%0A    %7D%0A%0A    private Object privateMethod() %7B%0A      return null;%0A    %7D%0A%0A    @Override%0A    public void run() %7B%0A%0A    %7D%0A%0A    @Override%0A    public Void apply(Void aVoid) %7B%0A      return null;%0A    %7D%0A  %7D%0A%7D%0A

Add test for PublicSignatureCollector.