/*
 * Copyright 2018 IBM Corp. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 */
package com.ibm.watson.developer_cloud.conversation.v1.model;

import java.lang.reflect.Type;
import java.util.List;

import com.google.gson.reflect.TypeToken;
import com.ibm.watson.developer_cloud.service.model.DynamicModel;
import com.ibm.watson.developer_cloud.util.GsonSerializationHelper;

/**
 * An output object that includes the response to the user, the nodes that were hit, and messages from the log.
 */
public class OutputData extends DynamicModel {
  private Type logMessagesType = new TypeToken<List<LogMessage>>() {
  }.getType();
  private Type textType = new TypeToken<List<String>>() {
  }.getType();
  private Type nodesVisitedType = new TypeToken<List<String>>() {
  }.getType();
  private Type nodesVisitedDetailsType = new TypeToken<List<DialogNodeVisitedDetails>>() {
  }.getType();

  /**
   * Gets the logMessages.
   *
   * @return the logMessages
   */
  public List<LogMessage> getLogMessages() {
    return GsonSerializationHelper.serializeDynamicModelProperty(this.get("log_messages"), logMessagesType);
  }

  /**
   * Gets the text.
   *
   * @return the text
   */
  public List<String> getText() {
    return GsonSerializationHelper.serializeDynamicModelProperty(this.get("text"), textType);
  }

  /**
   * Gets the nodesVisited.
   *
   * @return the nodesVisited
   */
  public List<String> getNodesVisited() {
    return GsonSerializationHelper.serializeDynamicModelProperty(this.get("nodes_visited"), nodesVisitedType);
  }

  /**
   * Gets the nodesVisitedDetails.
   *
   * @return the nodesVisitedDetails
   */
  public List<DialogNodeVisitedDetails> getNodesVisitedDetails() {
    return GsonSerializationHelper.serializeDynamicModelProperty(this.get("nodes_visited_details"),
        nodesVisitedDetailsType);
  }

  /**
   * Sets the logMessages.
   *
   * @param logMessages the new logMessages
   */
  public void setLogMessages(final List<LogMessage> logMessages) {
    this.put("log_messages", logMessages);
  }

  /**
   * Sets the text.
   *
   * @param text the new text
   */
  public void setText(final List<String> text) {
    this.put("text", text);
  }

  /**
   * Sets the nodesVisited.
   *
   * @param nodesVisited the new nodesVisited
   */
  public void setNodesVisited(final List<String> nodesVisited) {
    this.put("nodes_visited", nodesVisited);
  }

  /**
   * Sets the nodesVisitedDetails.
   *
   * @param nodesVisitedDetails the new nodesVisitedDetails
   */
  public void setNodesVisitedDetails(final List<DialogNodeVisitedDetails> nodesVisitedDetails) {
    this.put("nodes_visited_details", nodesVisitedDetails);
  }
}

@@ -953,24 +953,31 @@
 e user, the 
+dialog 
 nodes that w
@@ -984,11 +984,17 @@
 ere 
-hit
+triggered
 , an
@@ -1008,24 +1008,27 @@
 ges from the
+%0A *
  log.%0A */%0Apu
@@ -1221,32 +1221,130 @@
 %0A  %7D.getType();%0A
+  private Type genericType = new TypeToken%3CList%3CDialogRuntimeResponseGeneric%3E%3E() %7B%0A  %7D.getType();%0A
   private Type n
@@ -1931,32 +1931,261 @@
 textType);%0A  %7D%0A%0A
+  /**%0A   * Gets the generic.%0A   *%0A   * @return the generic%0A   */%0A  public List%3CDialogRuntimeResponseGeneric%3E getGeneric() %7B%0A    return GsonSerializationHelper.serializeDynamicModelProperty(this.get(%22generic%22), genericType);%0A  %7D%0A%0A
   /**%0A   * Gets 
@@ -3011,24 +3011,24 @@
 ng%3E text) %7B%0A
-
     this.put
@@ -3040,32 +3040,224 @@
 t%22, text);%0A  %7D%0A%0A
+  /**%0A   * Sets the generic.%0A   *%0A   * @param generic the new generic%0A   */%0A  public void setGeneric(final List%3CDialogRuntimeResponseGeneric%3E generic) %7B%0A    this.put(%22generic%22, generic);%0A  %7D%0A%0A
   /**%0A   * Sets 

Add generic property to OutputData