// Copyright 2014 The Go Authors.  All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package keywords

type KeywordCaller interface {
	Abstract()
	Assert()
	Boolean()
	Break()
	Byte()
	Case()
	Catch()
	Char()
	Class()
	Const()
	Continue()
	Default()
	Do()
	Double()
	Else()
	Enum()
	Extends()
	Final()
	Finally()
	Float()
	For()
	Goto()
	If()
	Implements()
	Import()
	Instanceof()
	Int()
	Interface()
	Long()
	Native()
	New()
	Package()
	Private()
	Protected()
	Public()
	Return()
	Short()
	Static()
	Strictfp()
	Super()
	Switch()
	Synchronized()
	This()
	Throw()
	Throws()
	Transient()
	Try()
	Void()
	Volatile()
	While()
	False()
	Null()
	True()
	Bool()
	Nil()
}

func Const(id string)        {}
func Static(strictfp string) {}
