code: private boolean shouldGwtDotCreate(TypeLiteral<?> typeLiteral) throws BindingCreationException {
      Class<?> rawType = typeLiteral.getRawType();
      if (rawType.isInterface()) {
        // Check whether we can GWT.create() the interface.
  
        // Remote service proxies don't have rebind rules; we handle them
        // specially by creating the corresponding synchronous interface (which
        // does have a rebind rule).
        if (RemoteServiceProxyBinding.isRemoteServiceProxy(typeLiteral)) {
          // We could check whether the synchronous interface has a rebind rule;
          // however, the user is probably expecting us to GWT.create() a service
          // interface for them.  If there isn't a rebind rule, a GWT rebind error
          // probably makes more sense than a Gin error.
          return true;
        }
  
        return hasRebindRule(rawType);
      } else {
        return hasAccessibleZeroArgConstructor(rawType) || hasRebindRule(rawType);
      }
    }
docs: Returns {@code true} if the given type should be created automatically with
  {@code GWT.create()}.
  
  <p>{@code GWT.create()} is used to create concrete classes with accessible
  zero-argument constructors, and interfaces or classes with GWT rebind
  rules.