The essence is: https://github.com/google/log4jscanner/blob/main/jar/jar.go
this is the decision logic:
func (c *checker) bad() bool {
return (c.hasLookupClass && c.hasOldJndiManagerConstructor) || (c.hasLookupClass && c.seenJndiManagerClass && !c.isAtLeastTwoDotSixteen)
}