code: private void tryCreateAdapters()
  	{
  		Object object = context;
  	
  		for( int p = 0; p < path.length; p++ )
  		{
  			if( object == null )
  				return;
  	
  			// if no adapter has yet been created for this pathItem
  			if( adapters[p] == null )
  			{
  				String pathItem = path[p];
  	
  				// try to find an adapter, otherwise create one or return null
  				// to create an adapter, we need a context and a path item
  				// context is the 'object' value (ie the value of the previous
  				// pathItem or the root context)
  				// path item is path[p]
  				if(pathItem.charAt(0)=='$')
  				{
  					if( PlatformSpecificProvider.get().isBindingToken( pathItem ) )
  						adapters[p] = PlatformSpecificProvider.get().createPropertyAdapter(object);
  					else if( CompositePropertyAdapter.DTOMAP_TOKEN.equals( pathItem ) )
  						adapters[p] = new DTOMapperPropertyAdapter( object );
  				}
  				else
  				{
  					adapters[p] = new ObjectPropertyAdapter( object, pathItem );
  				}
  	
  				// we should subscribe to the value changes so that we can
  				// subscribe to
  				// new values when anything on the path changes
  				adapterHandlerRegistrations[p] = adapters[p].registerPropertyChanged( onPropertyChanged, p );
  			}
  	
  			if( p < path.length - 1 )
  				object = adapters[p].getValue();
  		}
  	}
docs: possible...