@Override
	public <E extends Serializable> void handle(Transport<E> unwrappedRoot, Set<String> includesPath, Method setter, Serializable value) throws SerializationProcessingException {
		if (includesPath==null || includesPath.isEmpty()) {	//Don't bother - nobody wanted to see this value on client side
			return;
		}
		String fieldName = createFieldNameFromSetter(setter);
		boolean handled = false;
		for (String cachePathEntry : includesPath) {
			if (cachePathEntry.equalsIgnoreCase(fieldName))	 { //For first level fetches, like "address" 
				continueSerialialization(unwrappedRoot.getEntity(), setter, value, null);
				handled = true;
				break;
			} else if (cachePathEntry.startsWith(fieldName+".")) {	//For N-level fetches like "address.somethingElse.moreDeep" 						
				Set<String> nextSerializationPath = createNextPath(includesPath, fieldName);
				continueSerialialization(unwrappedRoot.getEntity(), setter, value, nextSerializationPath);
				handled = true;
				break;
			}
		}
		if (!handled) {
			EntityReference<?> reference = createReference(value);
			unwrappedRoot.addReference(fieldName, reference);	//TODO: key under which reference is
			
		}
	}