code: function makeTagTypes(name) {
    const parts = splitOne(name, '::');
    const tag = parts ? parts[1] : name;
    // Translate in the same way for all types, to match Python's generic translation.
    return ['scalar', 'sequence', 'mapping'].map(kind => new jsYaml.Type('!' + tag, {
      kind: kind,
      construct: data => ({[name]: applyOverrides(data, tag, 'parse')}),
      predicate: obj => checkType(obj, name),
      represent: obj => applyOverrides(obj[name], tag, 'dump'),
    }));
  }
docs: Generic tag-creating helper. For the given name of the form 'Fn::Something' (or just
  'Something'), creates a js-yaml Type object that can parse and dump this type. It creates it
  for all types of values, for simplicity and because that's how the official Python version
  works.