code: public synchronized void onBeanCreated(Object bean, boolean rootBean) {
          if (!configuration.isUseGc()) {
              return;
          }
          Assert.requireNonNull(bean, "bean");
          if (allInstances.containsKey(bean)) {
              throw new IllegalArgumentException("Bean instance is already managed!");
          }
  
          IdentitySet<Property> properties = getAllProperties(bean);
          IdentitySet<ObservableList> lists = getAllLists(bean);
          Instance instance = new Instance(bean, rootBean, properties, lists);
          allInstances.put(bean, instance);
          for (Property property : properties) {
              propertyToParent.put(property, instance);
          }
          for (ObservableList list : lists) {
              listToParent.put(list, instance);
          }
  
          if (!rootBean) {
              //Until the bean isn't referenced in another bean it will be removed at gc
              addToGC(instance, bean);
          }
      }
docs: This method must be called for each new Dolphin bean (see {@link RemotingBean}).
  Normally beans are created by {@link BeanManager#create(Class)}
  
  @param bean     the bean that was created
  @param rootBean if this is true the bean is handled as a root bean. This bean don't need a reference.