code: function insertAfterLastOccurrence(nodes, toInsert, file, fallbackPos, syntaxKind) {
      let lastItem = nodes.sort(nodesByPosition).pop();
      if (!lastItem) {
          throw new Error();
      }
      if (syntaxKind) {
          lastItem = findNodes(lastItem, syntaxKind).sort(nodesByPosition).pop();
      }
      if (!lastItem && fallbackPos == undefined) {
          throw new Error(`tried to insert ${toInsert} as first occurence with no fallback position`);
      }
      const lastItemPosition = lastItem ? lastItem.end : fallbackPos;
      return new change_1.InsertChange(file, lastItemPosition, toInsert);
  }
docs: Insert `toInsert` after the last occurence of `ts.SyntaxKind[nodes[i].kind]`
  or after the last of occurence of `syntaxKind` if the last occurence is a sub child
  of ts.SyntaxKind[nodes[i].kind] and save the changes in file.
  
  @param nodes insert after the last occurence of nodes
  @param toInsert string to insert
  @param file file to insert changes into
  @param fallbackPos position to insert if toInsert happens to be the first occurence
  @param syntaxKind the ts.SyntaxKind of the subchildren to insert after
  @return Change instance
  @throw Error if toInsert is first occurence but fall back is not set