   /**
    - Returns: a list of all the modifier names for a given view
    */
-  public func modifierNames(for view:UIView) -> [String]?{
+  public func modifierNames(for view:UIView) -> [String]? {
     return modifiers[view]?.map{ return $0.0 }
   }
 

   */
  public subscript(view: UIView, modifierName:String) -> [String]? {
    get {
      guard modifiers[view] != nil else { return nil }
      for o in modifiers[view]!.reversed(){
        if o.0 == modifierName{
          return o.1
        }
      }
      return nil
    }
    set(newValue) {
      if let newValue = newValue{
        if self.modifiers[view] == nil{
          self.modifiers[view] = HeroModifiers()
        }
        for (i, o) in modifiers[view]!.enumerated(){
          if o.0 == modifierName{
            self.modifiers[view]![i] = (modifierName, newValue)
            return
          }
        }
        modifiers[view]!.append((modifierName, newValue))
      } else {
        guard modifiers[view] != nil else { return }
        for (i, o) in modifiers[view]!.enumerated(){
          if o.0 == modifierName{
            modifiers[view]!.remove(at: i)
            return
          }

    }
    var rtn = HeroModifiers()
    let nsString = modifierString as NSString
    for result in matches(for: HeroContext.modifiersRegex, text:nsString){
      var rangeStr = [String]()
      if result.numberOfRanges > 2, result.rangeAt(2).location < nsString.length{
        let parameterString = nsString.substring(with: result.rangeAt(2)) as NSString
        for result in matches(for: HeroContext.parameterRegex, text: parameterString){
          rangeStr.append(parameterString.substring(with: result.range))
        }
      }
      rtn.append((nsString.substring(with: result.rangeAt(1)), rangeStr))
    }
    return rtn
  }
