private static boolean isTransformPossible(byte[] bytes) {
        if (bytes.length < 8) {
            return false;
        }

        // The transform method will be called for all classes, but ASM is only
        // capable of processing some class file format versions.  That's ok
        // because the transformer only modifies classes that have been
        // preprocessed by our build anyway.
        //
        // ASM doesn't provide a way to determine its max supported version, so
        // we hard code the supported version number.
        int classFileVersion = ((bytes[6] & 0xff) << 8) | (bytes[7] & 0xff);
        
        //Limit bytecode that we transform based on JDK retransform compatibility
        //If we have issues here, 1.8 classes will be instead handled by a separate
        //transformer that only does those classes.
        if (isJDK8WithHotReplaceBug)
            return classFileVersion <= Opcodes.V1_7;
        else
            return classFileVersion <= Opcodes.V11;
    }
private static boolean isTransformPossible ( byte [ ] bytes ) { if ( bytes . length < 8 ) { return false ; } int classFileVersion = ( ( bytes [ 6 ] & 0xff ) << 8 ) | ( bytes [ 7 ] & 0xff ) ; if ( isJDK8WithHotReplaceBug ) return classFileVersion <= Opcodes . V1_7 ; else return classFileVersion <= Opcodes . V11 ; }
Determines whether or not class bytes can be transformed.

@param bytes the class bytes
@return true if the class can be transformed