code: @Override
  	public <G extends GlobalContext<?, ?>> G createGlobalContext(Class<? extends G> globalContextImplType,
  			final Class<? extends EntityContext<?, ?>> entityContextImplType, Class<? extends PropertyContext<?, ?>> propertyContextImplType) {
  
  		// ByteBuddyState#resolveClassLoadingStrategy static method is an Hibernate ORM internal,
  		// please remove its use here as soon the issue HHH-13014 has been closed.
  		// url https://hibernate.atlassian.net/browse/HHH-13014.
  		Class<? extends G> globalContextType = new ByteBuddy()
  				.subclass( globalContextImplType )
  				.method( filterEntityMethod() )
  				.intercept( to( new EntityOrPropertyMethodInterceptor( entityContextImplType, propertyContextImplType ) ) )
  				.make().load( globalContextImplType.getClassLoader(), resolveClassLoadingStrategy( globalContextImplType ) ).getLoaded();
  
  		try {
  			return globalContextType.getConstructor( ConfigurationContext.class ).newInstance( this );
  		}
  		catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
  			throw log.cannotCreateGlobalContextProxy( globalContextImplType, e );
  		}
  	}
docs: Creates a new {@link GlobalContext} object based on the given context implementation types. All implementation
  types must declare a public or protected constructor with a single parameter, accepting {@link ConfigurationContext}.
  <p>
  Each context implementation type must provide an implementation of the method(s) declared on the particular
  provider-specific context interface. All methods declared on context super interfaces - {@code entity()} and
  {@code property()} - are implemented following the dynamic proxy pattern, the implementation types therefore can
  be declared abstract, avoiding the need to implement these methods themselves.
  <p>
  By convention, the implementation types should directly or indirectly extend {@link BaseContext}.
  
  @param globalContextImplType the provider-specific global context implementation type
  @param entityContextImplType the provider-specific entity context implementation type
  @param propertyContextImplType the provider-specific property context implementation type
  
  @return a new {@link GlobalContext} object based on the given context implementation types