public List<Object> serialize(){
  List<Object> serialized=new ArrayList<>();
  serialized.add(actions);
  serialized.add(timestamps);
  List<Object> serializedFunnelSteps=new ArrayList<>();
  for (  Set e : funnelSteps) {
    serializedFunnelSteps.addAll(e);
    serializedFunnelSteps.add(null);
  }
  serialized.add(serializedFunnelSteps);
  return serialized;
}

public List < Object > serialize ( ) { List < Object > serialized = new ArrayList < > ( ) ; serialized . add ( actions ) ; serialized . add ( timestamps ) ; List < Object > serializedFunnelSteps = new ArrayList < > ( ) ; for ( Set e : funnelSteps ) { serializedFunnelSteps . addAll ( e ) ; serializedFunnelSteps . add ( null ) ; } serialized . add ( serializedFunnelSteps ) ; return serialized ; }
serialize actions , timestamps , and funnel steps . have to split funnel steps with null . this is more efficient than passing around structs .
