This sequence of statements disagrees with the documentation:

    WorkingMemoryEntryPoint entryPoint = kSession.getWorkingMemoryEntryPoint( "epn" );
    FactHandle fh = entryPoint.insert( fact );
    kSession.update( fh, fact );   // should be done using entryPoint.update

But this causes (in 5.1.1) a NPE
Exception in thread "main" java.lang.NullPointerException
    at org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1379)
    at org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1338)
    at org.drools.impl.StatefulKnowledgeSessionImpl.update(StatefulKnowledgeSessionImpl.java:266)
    at event.Main.execute(Main.java:153)
    at event.Main.main(Main.java:164)

This is the line:
   if ( this.maintainTms ) {
                status = ((InternalFactHandle) factHandle).getEqualityKey().getStatus();
  }

and similar code can be found in trunk, so I suppose this is still possible.

-W