class JavaClassAnalyzerFactory extends FileAnalyzerFactory {

    private static final String NAME = "Java class";

    private static final String[] SUFFIXES = {
        "CLASS"
    };

    private static final byte[] CAFEBABE =
        new byte[] {(byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE};
    private static final int MAJOR_VER_HIGHBYTE = 6;
    private static final int MAJOR_VER_LOWBYTE = 7;
    private static final int JDK1_1_MAJOR_VER = 0x2D;
    private static final int JAVA_SE_9_MAJOR_VER = 0x35;

    private static final Matcher MATCHER = new Matcher() {
        @Override
        public boolean isPreciseMagic() {
            return true;
        }

        @Override
        public String description() {
            return "0xCAFEBABE magic with major_version from JDK 1.1 to Java" +
                " SE 9";
        }

        @Override
        public AnalyzerFactory isMagic(byte[] content, InputStream in) {<FILL_FUNCTION_BODY>}

        @Override
        public AnalyzerFactory forFactory() {
            return JavaClassAnalyzerFactory.DEFAULT_INSTANCE;
        }
    };

    public static final JavaClassAnalyzerFactory DEFAULT_INSTANCE =
        new JavaClassAnalyzerFactory();

    private JavaClassAnalyzerFactory() {
        super(null, null, SUFFIXES, null, MATCHER, null,
                AbstractAnalyzer.Genre.XREFABLE, NAME, false);
    }

    /**
     * Creates a new {@link JavaClassAnalyzer} instance.
     * @return a defined instance
     */
    @Override
    protected AbstractAnalyzer newAnalyzer() {
        return new JavaClassAnalyzer(this);
    }
}

            if (content.length < 8) {
                return null;
            }

            // Require CAFEBABE or indicate no match.
            for (int i = 0; i < CAFEBABE.length; ++i) {
                if (content[i] != CAFEBABE[i]) {
                    return null;
                }
            }
            // Require known major_version number.
            int majorVersion = ((content[MAJOR_VER_HIGHBYTE] & 0xff) << 1) |
                    (content[MAJOR_VER_LOWBYTE] & 0xff);
            if (majorVersion >= JDK1_1_MAJOR_VER && majorVersion <=
                JAVA_SE_9_MAJOR_VER) {
                return JavaClassAnalyzerFactory.DEFAULT_INSTANCE;
            }
            return null;
        
<methods>public final org.opengrok.indexer.analysis.AbstractAnalyzer getAnalyzer() ,public java.lang.String getName() ,public void returnAnalyzer() <variables>private final non-sealed java.lang.String name