package polyglot.ext.coffer.ast;
import polyglot.ast.*;
import polyglot.ext.jl.ast.*;
import polyglot.ext.coffer.types.*;
import polyglot.types.Flags;
import polyglot.types.Package;
import polyglot.types.Type;
import polyglot.types.Qualifier;
import polyglot.util.*;
import java.util.*;
/**
* NodeFactory for Coffer extension.
*/
public interface CofferNodeFactory extends NodeFactory {
Free Free(Position pos, Expr expr);
TrackedTypeNode TrackedTypeNode(Position pos, KeyNode key, TypeNode base);
AmbKeySetNode AmbKeySetNode(Position pos, List keys);
CanonicalKeySetNode CanonicalKeySetNode(Position pos, KeySet keys);
KeyNode KeyNode(Position pos, Key key);
New TrackedNew(Position pos, Expr outer, KeyNode key, TypeNode objectType, List args, ClassBody body);
ThrowConstraintNode ThrowConstraintNode(Position pos, TypeNode tn, KeySetNode keys);
CofferMethodDecl CofferMethodDecl(Position pos, Flags flags, TypeNode
returnType, String name, List argTypes,
KeySetNode entryKeys, KeySetNode returnKeys,
List throwConstraints, Block body);
CofferConstructorDecl CofferConstructorDecl(Position pos, Flags flags, String name, List
argTypes, KeySetNode entryKeys,
KeySetNode returnKeys, List
throwConstraints, Block body);
CofferClassDecl CofferClassDecl(Position pos, Flags flags, String name,
KeyNode key, TypeNode superClass, List
interfaces, ClassBody body);
}