copied in groovy L4J code
renamed to java