package ast

import (
	

	gast 
)

// A FootnoteLink struct represents a link to a footnote of Markdown
// (PHP Markdown Extra) text.
type FootnoteLink struct {
	gast.BaseInline
	Index    int
	RefCount int
	RefIndex int
}

// Dump implements Node.Dump.
func ( *FootnoteLink) ( []byte,  int) {
	 := map[string]string{}
	["Index"] = fmt.Sprintf("%v", .Index)
	["RefCount"] = fmt.Sprintf("%v", .RefCount)
	["RefIndex"] = fmt.Sprintf("%v", .RefIndex)
	gast.DumpHelper(, , , , nil)
}

// KindFootnoteLink is a NodeKind of the FootnoteLink node.
var KindFootnoteLink = gast.NewNodeKind("FootnoteLink")

// Kind implements Node.Kind.
func ( *FootnoteLink) () gast.NodeKind {
	return KindFootnoteLink
}

// NewFootnoteLink returns a new FootnoteLink node.
func ( int) *FootnoteLink {
	return &FootnoteLink{
		Index:    ,
		RefCount: 0,
		RefIndex: 0,
	}
}

// A FootnoteBacklink struct represents a link to a footnote of Markdown
// (PHP Markdown Extra) text.
type FootnoteBacklink struct {
	gast.BaseInline
	Index    int
	RefCount int
	RefIndex int
}

// Dump implements Node.Dump.
func ( *FootnoteBacklink) ( []byte,  int) {
	 := map[string]string{}
	["Index"] = fmt.Sprintf("%v", .Index)
	["RefCount"] = fmt.Sprintf("%v", .RefCount)
	["RefIndex"] = fmt.Sprintf("%v", .RefIndex)
	gast.DumpHelper(, , , , nil)
}

// KindFootnoteBacklink is a NodeKind of the FootnoteBacklink node.
var KindFootnoteBacklink = gast.NewNodeKind("FootnoteBacklink")

// Kind implements Node.Kind.
func ( *FootnoteBacklink) () gast.NodeKind {
	return KindFootnoteBacklink
}

// NewFootnoteBacklink returns a new FootnoteBacklink node.
func ( int) *FootnoteBacklink {
	return &FootnoteBacklink{
		Index:    ,
		RefCount: 0,
		RefIndex: 0,
	}
}

// A Footnote struct represents a footnote of Markdown
// (PHP Markdown Extra) text.
type Footnote struct {
	gast.BaseBlock
	Ref   []byte
	Index int
}

// Dump implements Node.Dump.
func ( *Footnote) ( []byte,  int) {
	 := map[string]string{}
	["Index"] = fmt.Sprintf("%v", .Index)
	["Ref"] = string(.Ref)
	gast.DumpHelper(, , , , nil)
}

// KindFootnote is a NodeKind of the Footnote node.
var KindFootnote = gast.NewNodeKind("Footnote")

// Kind implements Node.Kind.
func ( *Footnote) () gast.NodeKind {
	return KindFootnote
}

// NewFootnote returns a new Footnote node.
func ( []byte) *Footnote {
	return &Footnote{
		Ref:   ,
		Index: -1,
	}
}

// A FootnoteList struct represents footnotes of Markdown
// (PHP Markdown Extra) text.
type FootnoteList struct {
	gast.BaseBlock
	Count int
}

// Dump implements Node.Dump.
func ( *FootnoteList) ( []byte,  int) {
	 := map[string]string{}
	["Count"] = fmt.Sprintf("%v", .Count)
	gast.DumpHelper(, , , , nil)
}

// KindFootnoteList is a NodeKind of the FootnoteList node.
var KindFootnoteList = gast.NewNodeKind("FootnoteList")

// Kind implements Node.Kind.
func ( *FootnoteList) () gast.NodeKind {
	return KindFootnoteList
}

// NewFootnoteList returns a new FootnoteList node.
func () *FootnoteList {
	return &FootnoteList{
		Count: 0,
	}
}