fluid-ws-java-client/src/main/java/com/fluidbpm/ws/client/v1/sqlutil/wrapper/SQLUtilWebSocketRESTWrapper.java
public void massPopulateFormFields(
			boolean includeFieldDataParam,
			Form ... formsToPopulateFormFieldsForParam
	) {
		if(DISABLE_WS) {
			this.mode = Mode.RESTfulActive;
		}

		//FORM FIELDS...
		try {
			//When mode is null or [WebSocketActive]...
			if(this.getFormFieldsClient == null && Mode.RESTfulActive != this.mode) {
				this.getFormFieldsClient = new SQLUtilWebSocketGetFormFieldsClient(
						this.baseURL,
						null,
						this.loggedInUser.getServiceTicketAsHexUpper(),
						this.timeoutMillis,
						includeFieldDataParam,
						COMPRESS_RSP,
						COMPRESS_RSP_CHARSET);

				this.mode = Mode.WebSocketActive;
			}
		} catch (FluidClientException clientExcept) {
			if(clientExcept.getErrorCode() !=
					FluidClientException.ErrorCode.WEB_SOCKET_DEPLOY_ERROR) {
				throw clientExcept;
			}

			this.mode = Mode.RESTfulActive;
		}

		//Nothing to do...
		if(formsToPopulateFormFieldsForParam == null ||
				formsToPopulateFormFieldsForParam.length < 1) {
			return;
		}

		//Populate a known echo for all of the local form caches...
		Form[] formsToFetchForLocalCacheArr =
				new Form[formsToPopulateFormFieldsForParam.length];
		for(int index = 0;index < formsToFetchForLocalCacheArr.length;index++) {

			formsToFetchForLocalCacheArr[index] = new Form(formsToPopulateFormFieldsForParam[index].getId());
			formsToFetchForLocalCacheArr[index].setEcho(UUID.randomUUID().toString());
		}

		List<FormFieldListing> listingReturnFieldValsPopulated = new ArrayList<>();

		//Fetch all of the values in a single go...
		if(this.getFormFieldsClient != null) {
			listingReturnFieldValsPopulated =
					this.getFormFieldsClient.getFormFieldsSynchronized(formsToFetchForLocalCacheArr);
		} else {
			//Old Rest way of fetching all of the values...
			for(Form formToFetchFor : formsToFetchForLocalCacheArr) {
				List<Field> listOfFields =
						this.sqlUtilClient.getFormFields(
								formToFetchFor,
								includeFieldDataParam);

				FormFieldListing toAdd = new FormFieldListing();
				toAdd.setListing(listOfFields);
				toAdd.setListingCount((listOfFields == null) ? 0 : listOfFields.size());
				toAdd.setEcho(formToFetchFor.getEcho());
				listingReturnFieldValsPopulated.add(toAdd);
			}
		}

		//Populate each of the form from the param...
		for(Form formToSetFieldsOn : formsToPopulateFormFieldsForParam) {
			formToSetFieldsOn.setFormFields(
					this.getFieldValuesForFormFromCache(
							formToSetFieldsOn.getId(),
							listingReturnFieldValsPopulated,
							formsToFetchForLocalCacheArr));
		}
	}
public void massPopulateFormFields(
			boolean includeFieldDataParam,
			Form ... formsToPopulateFormFieldsForParam
	) {
		if(DISABLE_WS) {
			this.mode = Mode.RESTfulActive;
		}

		//FORM FIELDS...
		try {
			//When mode is null or [WebSocketActive]...
			if(this.getFormFieldsClient == null && Mode.RESTfulActive != this.mode) {
				this.getFormFieldsClient = new SQLUtilWebSocketGetFormFieldsClient(
						this.baseURL,
						null,
						this.loggedInUser.getServiceTicketAsHexUpper(),
						this.timeoutMillis,
						includeFieldDataParam,
						COMPRESS_RSP,
						COMPRESS_RSP_CHARSET);

				this.mode = Mode.WebSocketActive;
			}
		} catch (FluidClientException clientExcept) {
			if(clientExcept.getErrorCode() !=
					FluidClientException.ErrorCode.WEB_SOCKET_DEPLOY_ERROR) {
				throw clientExcept;
			}

			this.mode = Mode.RESTfulActive;
		}

		//Nothing to do...
		if(formsToPopulateFormFieldsForParam == null ||
				formsToPopulateFormFieldsForParam.length < 1) {
			return;
		}

		//Populate a known echo for all of the local form caches...
		Form[] formsToFetchForLocalCacheArr =
				new Form[formsToPopulateFormFieldsForParam.length];
		for(int index = 0;index < formsToFetchForLocalCacheArr.length;index++) {

			formsToFetchForLocalCacheArr[index] = new Form(formsToPopulateFormFieldsForParam[index].getId());
			formsToFetchForLocalCacheArr[index].setEcho(UUID.randomUUID().toString());
		}

		List<FormFieldListing> listingReturnFieldValsPopulated = new ArrayList<>();

		//Fetch all of the values in a single go...
		if(this.getFormFieldsClient != null) {
			listingReturnFieldValsPopulated =
					this.getFormFieldsClient.getFormFieldsSynchronized(formsToFetchForLocalCacheArr);
		} else {
			//Old Rest way of fetching all of the values...
			for(Form formToFetchFor : formsToFetchForLocalCacheArr) {
				List<Field> listOfFields =
						this.sqlUtilClient.getFormFields(
								formToFetchFor,
								includeFieldDataParam);

				FormFieldListing toAdd = new FormFieldListing();
				toAdd.setListing(listOfFields);
				toAdd.setListingCount((listOfFields == null) ? 0 : listOfFields.size());
				toAdd.setEcho(formToFetchFor.getEcho());
				listingReturnFieldValsPopulated.add(toAdd);
			}
		}

		//Populate each of the form from the param...
		for(Form formToSetFieldsOn : formsToPopulateFormFieldsForParam) {
			formToSetFieldsOn.setFormFields(
					this.getFieldValuesForFormFromCache(
							formToSetFieldsOn.getId(),
							listingReturnFieldValsPopulated,
							formsToFetchForLocalCacheArr));
		}
	}
Retrieves all the (Fields) for the {@code formsToGetDescForParam}.

@param includeFieldDataParam Should Field data be included?
@param formsToPopulateFormFieldsForParam The Fluid Form to get Descendants for.