public static InternalFactHandle[] orderFacts(ObjectStore objectStore) {
    // this method is just needed for testing purposes, to allow round tripping
    int size = objectStore.size();
    InternalFactHandle[] handles = new InternalFactHandle[size];
    int i = 0;
    for (Iterator<?> it = objectStore.iterateFactHandles(); it.hasNext(); ) {
      handles[i++] = (InternalFactHandle) it.next();
    }

    Arrays.sort(handles, new HandleSorter());

    return handles;
  }
  public static void readFactHandles(
      MarshallerReaderContext context,
      org.drools.core.marshalling.impl.ProtobufMessages.EntryPoint _ep,
      ObjectStore objectStore,
      List<PropagationContextImpl> pctxs)
      throws IOException, ClassNotFoundException {
    InternalWorkingMemory wm = context.wm;

    SessionEntryPoint entryPoint = context.wm.getEntryPoints().get(_ep.getEntryPointId());
    // load the handles
    for (ProtobufMessages.FactHandle _handle : _ep.getHandleList()) {
      InternalFactHandle handle = readFactHandle(context, entryPoint, _handle);

      context.handles.put(handle.getId(), handle);

      if (!_handle.getIsJustified()) {
        // BeliefSystem handles the Object type
        if (handle.getObject() != null) {
          objectStore.addHandle(handle, handle.getObject());
        }

        // add handle to object type node
        assertHandleIntoOTN(context, wm, handle, pctxs);
      }
    }
  }