private static Factory getFactoryInstance(HCatClient client) {
    if (factoryInstance == null){
      createFactoryInstance(client);
    }
    return factoryInstance;
  }
ReplicationTask captures the concept of what it'd take to replicate changes from
one warehouse to another given a notification event that captures what changed.
hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/repl/ReplicationTask.java