public String getOuterMostNullEmbeddableIfAny(String column) {
		String[] path = column.split( "\\." );
		if ( !isEmbeddableColumn( path ) ) {
			return null;
		}
		// the cached value may be null hence the explicit key lookup
		if ( columnToOuterMostNullEmbeddableCache.containsKey( column ) ) {
			return columnToOuterMostNullEmbeddableCache.get( column );
		}
		return determineAndCacheOuterMostNullEmbeddable( column, path );
	}
public String getOuterMostNullEmbeddableIfAny ( String column ) { String [ ] path = column . split ( "\\." ) ; if ( ! isEmbeddableColumn ( path ) ) { return null ; } if ( columnToOuterMostNullEmbeddableCache . containsKey ( column ) ) { return columnToOuterMostNullEmbeddableCache . get ( column ) ; } return determineAndCacheOuterMostNullEmbeddable ( column , path ) ; }
Should only called on a column that is being set to null.

Returns the most outer embeddable containing {@code column} that is entirely null.
Return null otherwise i.e. not embeddable.

The implementation lazily compute the embeddable state and caches it.
The idea behind the lazy computation is that only some columns will be set to null
and only in some situations.
The idea behind caching is that an embeddable contains several columns, no need to recompute its state.