title: Iterate Multivalue string
body: <p>I'm having strange problem with Iterate Multivalue in Model Builder.
  The model is partially based on <a href="http://blogs.esri.com/esri/arcgis/2012/07/16/generating-a-multivalue-choice-list/" rel="nofollow noreferrer">Generating a multivalue choice list</a> example.</p>
  
  <p>What I'm trying to do is show filtered layer list where user will be able to select some of them. For that I'm using Script Tool with 1 Input Multivalue string parameter, and 1 Derived Multivalue Any Value parameter.<br>
  Then selected layers names (multivalue variable) are used in Iterate Multivalue where each iterated value is used in Calculate Value. Layers are filtered in ToolValidator.</p>
  
  <p>Now, the problem is that Iterate Multivalue doesn't iterate values. Instead it runs just one loop and passes one value which is a string with all selected layer names separated by semicolon.</p>
  
  <p>ToolValidator's UpdateParameters code</p>
  
  <pre><code>if not self.params[0].altered:
    mxd = arcpy.mapping.MapDocument("CURRENT")
    dataframe = arcpy.mapping.ListDataFrames(mxd)[0]
    layers = set()
    for lyr in arcpy.mapping.ListLayers(mxd, "", dataframe):
      if lyr.visible == True:
        desc = arcpy.Describe(lyr.name)
        if desc.dataType == "RasterLayer":
          layers.add(desc.name)
    self.params[0].filter.list = sorted(layers)
    self.params[0].values = sorted(layers)
    return
  </code></pre>
  
  <p>Submodel that uses multivalue passed from main model with script tool.
  <img src="https://i.stack.imgur.com/DyuTT.png" alt="enter image description here"></p>
  
  <p>Here is tool's output
  <img src="https://i.stack.imgur.com/1j6Ws.png" alt="enter image description here"></p>
  
  <p>Does anyone has explanation for this strange behavior? What I'm doing wrong?</p>