(outputChannels);
    }
    /**
     * In your JSON job specification, include one child of OutputChannels for each audio channel that you want in your
     * output. Each child should contain one instance of InputChannels or InputChannelsFineTune.
     * 
     * NOTE: This method appends the values to the existing list (if any). Use
     * {@link #setOutputChannels(java.util.Collection)} or {@link #withOutputChannels(java.util.Collection)} if you want
     * to override the existing values.
     * 
     * 
     * @param outputChannels
     *        In your JSON job specification, include one child of OutputChannels for each audio channel that you want
     *        in your output. Each child should contain one instance of InputChannels or InputChannelsFineTune.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public ChannelMapping withOutputChannels(OutputChannelMapping... outputChannels) {
        if (this.outputChannels == null) {
            setOutputChannels(new java.util.ArrayList(outputChannels.length));
        }
        for (OutputChannelMapping ele : outputChannels) {
            this.outputChannels.add(ele);
        }
        return this;
    }
    /**
     * In your JSON job specification, include one child of OutputChannels for each audio channel that you want in your
     * output. Each child should contain one instance of InputChannels or InputChannelsFineTune.
     * 
     * @param outputChannels
     *        In your JSON job specification, include one child of OutputChannels for each audio channel that you want
     *        in your output. Each child should contain one instance of InputChannels or InputChannelsFineTune.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public ChannelMapping withOutputChannels(java.util.Collection outputChannels) {
        setOutputChannels(outputChannels);
        return this;
    }
    /**
     * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be
     * redacted from this string using a placeholder value.
     *
     * @return A string representation of this object.
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        if (getOutputChannels() != null)
            sb.append("OutputChannels: ").append(getOutputChannels());
        sb.append("}");
        return sb.toString();
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (obj instanceof ChannelMapping == false)
            return false;
        ChannelMapping other = (ChannelMapping) obj;
        if (other.getOutputChannels() == null ^ this.getOutputChannels() == null)
            return false;
        if (other.getOutputChannels() != null && other.getOutputChannels().equals(this.getOutputChannels()) == false)
            return false;
        return true;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;
        hashCode = prime * hashCode + ((getOutputChannels() == null) ? 0 : getOutputChannels().hashCode());
        return hashCode;
    }
    @Override
    public ChannelMapping clone() {
        try {
            return (ChannelMapping) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e);
        }
    }
    @com.amazonaws.annotation.SdkInternalApi
    @Override
    public void marshall(ProtocolMarshaller protocolMarshaller) {
        com.amazonaws.services.mediaconvert.model.transform.ChannelMappingMarshaller.getInstance().marshall(this, protocolMarshaller);
    }
}