// 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()
}
