func (fa *facade) Doc() string {
	return fa.doc.Text()
}
Doc returns lead comment.
package aster
import (
	"fmt"
	"go/ast"
	"go/token"
	"go/types"
	"sort"
	"strings"
)
type Facade interface {
	facadeIdentify()  
	FileSet() *token.FileSet
	FormatNode(ast.Node) (string, error)
	PackageInfo() *PackageInfo
	File() *File
	Node() ast.Node
	Ident() *ast.Ident
	Object() types.Object
	ObjKind() ObjKind
	TypKind() TypKind
	Id() string
	Name() string
	Doc() string
	SetDoc(text string) bool
	Exported() bool
	String() string
	Underlying() types.Type
	IsAlias() bool
	NumMethods() int
	Method(i int) Facade
	AssertableTo(T Facade) bool
	AssignableTo(T Facade) bool
	ConvertibleTo(T Facade) bool
	Implements(iface Facade, usePtr bool) bool
	Elem() types.Type
	Key() types.Type
	Len() int64
	ChanDir() types.ChanDir
	BasicInfo() types.BasicInfo
	BasicKind() types.BasicKind
	IsMethod() bool
	Params() *types.Tuple
	Recv() *types.Var
	Results() *types.Tuple
	Variadic() bool
	Body() (string, error)
	CoverBody(body string) error
	NumFields() int
	Field(i int) *StructField
	FieldByName(name string) (field *StructField, found bool)
	IfaceEmbeddedType(i int) Facade
	IfaceEmpty() bool
	IfaceExplicitMethod(i int) Facade
	IfaceNumEmbeddeds() int
	IfaceNumExplicitMethods() int
}
type facade struct {
	fset         *token.FileSet
	file         *File
	node         ast.Node
	obj          types.Object
	pkg          *PackageInfo
	ident        *ast.Ident
	doc          *ast.CommentGroup
	structFields []*StructField  
}
var _ Facade = (*facade)(nil)
func (fa *facade) facadeIdentify() {}
func (fa *facade) mustGetFacadeByObj(obj types.Object) *facade {
	facade, idx := fa.pkg.getFacadeByObj(obj)
	if idx < 0 {
		panic(fmt.Sprintf("aster: mustGetFacadeByObj can't find %s", obj.String()))
	}
	return facade
}
func (fa *facade) mustGetFacadeByTyp(typ types.Type) *facade {
	facade, idx := fa.pkg.getFacadeByTyp(typ)
	if idx < 0 {
		panic(fmt.Sprintf("aster: mustGetFacadeByTyp can't find %s", typ.String()))
	}
	return facade
}
func (fa *facade) FileSet() *token.FileSet {
	return fa.fset
}
func (fa *facade) FormatNode(node ast.Node) (string, error) {
	return fa.PackageInfo().FormatNode(node)
}
func (fa *facade) PackageInfo() *PackageInfo {
	return fa.pkg
}
func (fa *facade) File() *File {
	return fa.file
}
func (fa *facade) Node() ast.Node {
	return fa.node
}
func (fa *facade) Ident() *ast.Ident {
	return fa.ident
}
func (fa *facade) Object() types.Object {
	return fa.obj
}
func (fa *facade) ObjKind() ObjKind {
	return GetObjKind(fa.obj)
}
func (fa *facade) TypKind() TypKind {
	return GetTypKind(fa.typ())
}
func (fa *facade) typKind() TypKind {
	if fa.ObjKind() == Bad {
		return Invalid
	}
	return GetTypKind(fa.obj.Type())
}
func (fa *facade) typ() types.Type {
	if fa.typKind() == named {
		return fa.obj.Type().Underlying()
	}
	return fa.obj.Type()
}
func (fa *facade) Id() string { return fa.obj.Id() }
func (fa *facade) Name() string {
	return fa.ident.Name
}