code: protected <T extends Serializable> void postDeserializer(T serializableObject) {
          Method method = null;
          for(Field field : ReflectionMethods.getAllFields(new LinkedList<>(), serializableObject.getClass())) {
              if (field.isAnnotationPresent(BigMap.class)) { //look only for BigMaps
                  field.setAccessible(true);
                  try {
                      if(field.get(serializableObject) == null) { //initialize it only if null. this makes it safe it the BigMap was serialized in the file.
  
                          //lazy initialize the correct method once
                          if(method == null) {
                              method = ReflectionMethods.findMethod(serializableObject, "initializeBigMapField", this, field);
                          }
  
                          ReflectionMethods.invokeMethod(serializableObject, method, this, field);
                      }
                  }
                  catch (IllegalAccessException ex) {
                      throw new RuntimeException(ex);
                  }
              }
          }
  
      }
docs: This method is called after the object deserialization. It initializes all BigMaps of the serializable object which
  have a null value. The main idea is that once an object is deserialized it will contain nulls in all the BigMap fields
  which were not serialized. For all of those fields we call their initialization methods.
  
  @param serializableObject
  @param <T>